В настоящее время я использую интерфейс Python для Stanford Parser.Stanford Parser for Python: Формат вывода
from nltk.parse.stanford import StanfordParser
import os
os.environ['STANFORD_PARSER'] ='/Users/au571533/Downloads/stanford-parser-full-2016-10-31'
os.environ['STANFORD_MODELS'] = '/Users/au571533/Downloads/stanford-parser-full-2016-10-31'
parser=StanfordParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
new=list(parser.raw_parse("The young man who boarded his usual train that Sunday afternoon was twenty-four years old and fat. "))
print new
Выход я получаю выглядит примерно так:
[Tree('ROOT', [Tree('S', [Tree('NP', [Tree('NP', [Tree('DT', ['The']), Tree('JJ', ['young']), Tree('NN', ['man'])]), Tree('SBAR', [Tree('WHNP', [Tree('WP', ['who'])]), Tree('S', [Tree('VP', [Tree('VBD', ['boarded']), Tree('NP', [Tree('PRP$', ['his']), Tree('JJ', ['usual']), Tree('NN', ['train'])]), Tree('NP', [Tree('DT', ['that']), Tree('NNP', ['Sunday'])])])])])]), Tree('NP', [Tree('NN', ['afternoon'])]), Tree('VP', [Tree('VBD', ['was']), Tree('NP', [Tree('NP', [Tree('JJ', ['twenty-four']), Tree('NNS', ['years'])]), Tree('ADJP', [Tree('JJ', ['old']), Tree('CC', ['and']), Tree('JJ', ['fat'])])])]), Tree('.', ['.'])])])]
Однако, мне нужна только часть речевых меток, поэтому я хотел бы иметь выход в таком формате, который выглядит как слово /тег.
В java можно указать -outputFormat 'wordsAndTags', и он дает именно то, что я хочу. Любой намек на то, как реализовать это в Python?
Помощь была бы высоко оценена. Спасибо!
PS:. Пытались использовать Stanford POSTagger, но это гораздо менее точны на некоторые слова я интересуюсь
Не могли бы вы изменить в примере того, как вы хотите, чтобы результат выглядел? –
Для предложения в приведенном выше коде, например: ['The/DT', 'young/JJ', 'man/NN'], либо список строковых элементов, либо список кортежей или таблицы будь умницей. Суть в том, что мне не нужна информация дерева зависимостей, но только части речи для каждого слова. Благодаря! :) – roberta