Я заинтересован в определении неоднозначности syntacti c с использованием анализа k-best с использованием интерфейса Stanford Core NLP для Python. Следующий код выделяет один разбор и «оценку» (логарифмическую вероятность) для данного предложения, но я хотел бы получить, скажем, 2 лучших разбора и их оценки. Глядя на dir (предложение [0]), кажется возможным использовать kBestParseTrees, но я не совсем уверен, как это реализовать. Любая помощь приветствуется! Спасибо :)
from stanfordnlp.server import CoreNLPClient
import os
os.environ['CORENLP_HOME'] = "/path/to/stanford-corenlp-full-2018-10-05"
print(os.environ['CORENLP_HOME'])
# example text
print('---')
print('input text')
print('')
text = "John said Bill went to London on Tuesday. He bought some wine. The wine was delicious. John said Bill went to London. John said Bill went to London for three days. I saw the elephant in my pajamas. This sentence is really not ambiguous, although it is quite a long sentence."
print(text)
# set up the client
print('---')
print('starting up Java Stanford CoreNLP Server...')
# set up the client
with CoreNLPClient(annotators=['tokenize','ssplit','pos','lemma','ner', 'parse', 'depparse','coref'], timeout=30000, memory='16G') as client:
# submit the request to the server
ann = client.annotate(text)
# get the sentences
sentence = ann.sentence
# get the parse and score for each sentence
for sent in sentence:
constituency_parse = sent.parseTree
print(constituency_parse)
print(constituency_parse.score)
print(dir(sentence[0]))