Я использую синтаксический анализатор НЛП Стэнфорда (http://nlp.stanford.edu/software/lex-parser.shtml), чтобы разбить блок текста на предложения, а затем посмотреть, какие предложения содержат данное слово.
Вот мой код:
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.process.*;
public class TokenizerDemo {
public static void main(String[] args) throws IOException {
DocumentPreprocessor dp = new DocumentPreprocessor(args[0]);
for (List sentence : dp) {
for (Object word : sentence) {
System.out.println(word);
System.out.println(word.getClass().getName());
if (word.equals(args[1])) {
System.out.println("yes!\n");
}
}
}
}
}
Я запускаю код из командной строки, используя "java TokenizerDemo testfile.txt wall"
Содержимое testfile.txt:
Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall.
Поэтому я хочу, чтобы программа обнаружила«стена» в первом предложении («стена» вводится как второй аргумент в командной строке). Но программа не обнаруживает «стену», потому что она никогда не печатает «да!». Вывод программы:
Humpty
edu.stanford.nlp.ling.Word
Dumpty
edu.stanford.nlp.ling.Word
sat
edu.stanford.nlp.ling.Word
on
edu.stanford.nlp.ling.Word
a
edu.stanford.nlp.ling.Word
wall
edu.stanford.nlp.ling.Word
.
edu.stanford.nlp.ling.Word
Humpty
edu.stanford.nlp.ling.Word
Dumpty
edu.stanford.nlp.ling.Word
had
edu.stanford.nlp.ling.Word
a
edu.stanford.nlp.ling.Word
great
edu.stanford.nlp.ling.Word
fall
edu.stanford.nlp.ling.Word
.
edu.stanford.nlp.ling.Word
DocumentPreprocessor из синтаксического анализатора Stanford правильно разбивает текст на два предложения. Проблема заключается в использовании метода equals. Каждое слово имеет тип «edu.stanford.nlp.ling.Word».Я попытался получить доступ к базовой строке слова, поэтому я могу проверить, равна ли строка "стене", но я не могу понять, как получить к ней доступ.
Если я напишу второй цикл forкак "для" (слово слово: sentence) {"тогда я получаю сообщение об ошибке несовместимых типов при компиляции.