Как извлечь объект глагола субъекта с помощью NLP Java? для каждого предложения

Я хочу найти подлежащее, глагол и дополнение для каждого предложения, а затем они будут переданы в библиотеку генерации естественного языка simpleNLG для формирования предложения.

Я попробовал несколько библиотек, таких как парсеры Cornlp, opennlp, Standford. Но я не могу найти их точно.

Теперь, в худшем случае, мне придется написать длинный набор if-else, чтобы найти субъект, глагол и объект в каждом предложении, что не всегда точно для простого NLG.

нравится,

  • NN, nsub и т. д. относятся к подлежащему, VB, VBZ — к глаголу.

Я попробовал лексический анализатор,

LexicalizedParser lp = **new LexicalizedParser("englishPCFG.ser.gz");**
String[] sent = { "This", "is", "an", "easy", "sentence", "." };
Tree parse = (Tree) lp.apply(Arrays.asList(sent));
parse.pennPrint();
System.out.println();
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");
tp.print(parse);

что дает этот вывод,

nsubj(use-2, I-1)
root(ROOT-0, use-2)
det(parser-4, a-3)
dobj(use-2, parser-4)

И я хочу что-то подобное

subject = I
verb = use
det = a
object = parser

Есть ли более простой способ найти это в JAVA или мне следует использовать if-else? пожалуйста, помогите мне с этим.


person pritul panchal    schedule 09.04.2020    source источник


Ответы (1)


Вы можете использовать аннотатор openie для получения троек. Вы можете запустить это в командной строке или создать конвейер с помощью этих аннотаторов.

команда:

java -Xmx10g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,depparse,natlog,openie -file example.txt

Джава:

Properties props = new Properties();
props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,depparse,natlog,openie");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
Annotation result = pipeline.process("..."); 

вход:

Joe ate some pizza.

выход:

Extracted the following Open IE triples:
1.0     Joe     ate     pizza

Подробнее здесь: https://stanfordnlp.github.io/CoreNLP/openie.html

person StanfordNLPHelp    schedule 13.04.2020
comment
Я столкнулся с oepnIE, но для запуска программы требуется минимум 5 ГБ памяти, есть ли способ запустить его с меньшей памятью? А также будет ли это работать со сложными предложениями? - person pritul panchal; 16.04.2020
comment
Вы можете удалить аннотатор ner, и я могу запустить его с 2 ГБ ОЗУ. - person StanfordNLPHelp; 16.04.2020