Используя библиотеку Stanford Java CoreNLP, у меня есть это:
String text = "My name is Anthony";
CoreDocument doc = new CoreDocument(text);
pipeline.annotate(doc);
for(Tree t : doc.sentences().get(0).constituencyParse()) {
String tmp = "";
for(Word w : t.yieldWords()) {
tmp = tmp + " " + w.word();
}
System.out.println(t.label().toString() + " - " + WordParts.getValue(t.label().toString()) + " - " + tmp);
Прямо сейчас, программа выводит это:
ROOT - INVALID - My name is Anthony
S - INVALID - My name is Anthony
NP - INVALID - My name
PRP$ - Possessive pronoun - My
My-1 - INVALID - My
NN - Singular noun - name
name-2 - INVALID - name
VP - INVALID - is Anthony
VBZ - 3rd person singular present verb - is
Subject: Anthony
is-3 - INVALID - is
NP - INVALID - Anthony
NNP - Proper singular noun - Anthony
Anthony-4 - INVALID - Anthony
Сокращения WordParts.java
взяты из этого post (Java Stanford NLP: часть меток Speech? ) и файл класса можно найти здесь: (https://github.com/AJ4real/References/blob/master/WordParts.java) Я знаю, что метки не Parts of Speech
потому что некоторые значения возвращают INVALID
, так как я могу найти полные термины для сокращений, которые происходят от t.label().toString()
?