Стэнфордский парсер: как извлечь зависимости? - PullRequest
7 голосов
/ 27 марта 2011

Моя работа состоит в том, чтобы найти запрос (может быть noun+verb) в предложении, а затем извлечь объект.

пример: "coding is sometimes a tough work." Мой запрос будет: "coding is".

типизированные зависимости, которые я получаю:

nsubj(work-6, coding-1)   
cop(work-6, is-2)    
advmod(work-6, sometimes-3)
det(work-6, a-4)
amod(work-6, tough-5)

Моя программа должна извлечь зависимость nsubj, идентифицировать "coding" как запрос и сохранить "work".

Может быть, это кажется простым, но до сих пор я не нашел метод, способный извлечь конкретную типизированную зависимость, и мне действительно нужно это, чтобы закончить свою работу.

Любая помощь приветствуется,

Ответы [ 2 ]

10 голосов
/ 07 февраля 2013

Вы можете найти зависимости с помощью следующего кода:

Tree tree = sentence.get(TreeAnnotation.class);
// Get dependency tree
TreebankLanguagePack tlp = new PennTreebankLanguagePack();
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(tree);
Collection<TypedDependency> td = gs.typedDependenciesCollapsed();
System.out.println(td);

Object[] list = td.toArray();
System.out.println(list.length);
TypedDependency typedDependency;
for (Object object : list) {
typedDependency = (TypedDependency) object;
System.out.println("Depdency Name"typedDependency.dep().nodeString()+ " :: "+ "Node"+typedDependency.reln());
if (typedDependency.reln().getShortName().equals("something")) {
   //your code
}
1 голос
/ 14 февраля 2012

Я не думаю, что есть способ заставить синтаксический анализатор извлечь зависимости вокруг заданного слова. Однако вы можете просто просмотреть список зависимостей для каждого предложения, выполнив поиск всех случаев, в которых слово запроса появляется в отношении nsubj.

Кроме того, как вы храните разборы предложений? Если (как я понял из вашего вопроса) он находится в текстовом файле, вы можете просто использовать 2 последовательных запроса grep, один для слова запроса и один для отношения, которое вы хотите, чтобы получить список соответствующих других слов.

...