Поиск фраз существительных с помощью анализатора Стэнфорда - PullRequest
0 голосов
/ 27 октября 2011

Я хочу найти несколько фраз в данном предложении, используя анализатор Стэнфорда.Я использую Java.

Пример предложения:

Качество изображения действительно хорошее.

Теперь мне нужно извлечь "Качество изображения".

Есть ли способ пройти через дерево зависимостей для достижения желаемого результата?
Кроме того, может ли stanford анализировать предложения тегов в формате XML?

Ответы [ 2 ]

5 голосов
/ 30 января 2012

Если вы хотите найти все существительные фразы, то это, вероятно, легче всего сделать, работая с деревом разбора структуры фраз, а не с представлением зависимостей.Вы можете вручную выполнить итерацию по узлам объекта Tree и посмотреть, является ли label (). Value () «NP», или вы можете использовать TregexPattern из «@NP», а затем выполнить итерацию по NP с помощью TregexMatcher.1001 *

Вывод формата XML из анализатора можно получить, используя флаг командной строки

-outputFormatOptions xml

или в коде, создав объект TreePrint со строкой параметров «xml».

2 голосов
/ 27 ноября 2014

Просто чтобы расширить ответ @ christopher-manning, вот код, который вы можете использовать:

private List<String> getNounPhrases(Tree parse) {
    List<String> result = new ArrayList<>();
    TregexPattern pattern = TregexPattern.compile("@NP");
    TregexMatcher matcher = pattern.matcher(parse);
    while (matcher.find()) {
        Tree match = matcher.getMatch();
        List<Tree> leaves = match.getLeaves();
        System.out.println(leaves);
        // Some Guava magic.
        String nounPhrase = Joiner.on(' ').join(Lists.transform(leaves, Functions.toStringFunction()));
        result.add(nounPhrase);
        List<LabeledWord> labeledYield = match.labeledYield();
        System.out.println("labeledYield: " + labeledYield);
    }
    return result;
}
...