Существует множество оболочек Python для Stanford CoreNLP. Здесь есть список (вместе с обертками для других языков). Сначала вам нужно запустить сервер Stanford CoreNLP . Вот немного кода, который использует pycorenlp :
from pycorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost:9000')
text = "Ceci est un test de l'étiqueteur morpho-syntaxique du français."
output = nlp.annotate(text, properties={
'annotators': 'tokenize, ssplit, pos',
'outputFormat': 'json'
})
from pprint import pprint
pprint(output)
Результатом является структура данных JSON (вы можете выбрать другие форматы, указав другое значение для свойства outputFormat
, например, 'text', 'xml' ...) со всеми аннотациями, включая теги POS ( pos
атрибут для каждого токена), следующим образом:
{'sentences': [{'index': 0,
'tokens': [{'after': ' ',
'before': '',
'characterOffsetBegin': 0,
'characterOffsetEnd': 4,
'index': 1,
'originalText': 'Ceci',
'pos': 'NNP',
'word': 'Ceci'},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 5,
'characterOffsetEnd': 8,
'index': 2,
'originalText': 'est',
'pos': 'NNP',
'word': 'est'},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 9,
'characterOffsetEnd': 11,
'index': 3,
'originalText': 'un',
'pos': 'JJ',
'word': 'un'},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 12,
'characterOffsetEnd': 16,
'index': 4,
'originalText': 'test',
'pos': 'NN',
'word': 'test'},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 17,
'characterOffsetEnd': 19,
'index': 5,
'originalText': 'de',
'pos': 'IN',
'word': 'de'},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 20,
'characterOffsetEnd': 32,
'index': 6,
'originalText': "l'étiqueteur",
'pos': 'JJ',
'word': "l'étiqueteur"},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 33,
'characterOffsetEnd': 50,
'index': 7,
'originalText': 'morpho-syntaxique',
'pos': 'JJ',
'word': 'morpho-syntaxique'},
{'after': ' ',
'before': ' ',
'characterOffsetBegin': 51,
'characterOffsetEnd': 53,
'index': 8,
'originalText': 'du',
'pos': 'NNP',
'word': 'du'},
{'after': '',
'before': ' ',
'characterOffsetBegin': 54,
'characterOffsetEnd': 62,
'index': 9,
'originalText': 'français',
'pos': 'NN',
'word': 'français'},
{'after': '',
'before': '',
'characterOffsetBegin': 62,
'characterOffsetEnd': 63,
'index': 10,
'originalText': '.',
'pos': '.',
'word': '.'}]}]}