私はスタンフォードCoreNLP OpenIE注釈者に関する質問があります。スタンフォードCoreNLP OpenIE注釈者
私は、OpenIEを使用して関係を抽出するために、スタンフォードCoreNLPバージョンスタンフォードコアnlp-full-2015-12-09を使用しています。私は多くのJavaを知らないので、Python 3.4用にpycorenlp
ラッパーを使用しています。
私は文のすべての単語の間の関係を抽出したい、私は以下のコードを使用します。私はまた、各トリプレットの自信を示すに興味を持っています:
import nltk
from pycorenlp import *
import collections
nlp=StanfordCoreNLP("http://localhost:9000/")
s="Twenty percent electric motors are pulled from an assembly line"
output = nlp.annotate(s, properties={"annotators":"tokenize,ssplit,pos,depparse,natlog,openie",
"outputFormat": "json","triple.strict":"true"})
result = [output["sentences"][0]["openie"] for item in output]
print(result)
for i in result:
for rel in i:
relationSent=rel['relation'],rel['subject'],rel['object']
print(relationSent)
これは私が得た結果である:
[[{'relationSpan': [4, 6], 'subject': 'Twenty percent electric motors', 'objectSpan': [8, 10], 'relation': 'are pulled from', 'object': 'assembly line', 'subjectSpan': [0, 4]}, {'relationSpan': [4, 6], 'subject': 'percent electric motors', 'objectSpan': [8, 10], 'relation': 'are pulled from', 'object': 'assembly line', 'subjectSpan': [1, 4]}, {'relationSpan': [4, 5], 'subject': 'Twenty percent electric motors', 'objectSpan': [5, 6], 'relation': 'are', 'object': 'pulled', 'subjectSpan': [0, 4]}, {'relationSpan': [4, 5], 'subject': 'percent electric motors', 'objectSpan': [5, 6], 'relation': 'are', 'object': 'pulled', 'subjectSpan': [1, 4]}]]
そしてトリプレットは、次のとおりです。
('are pulled from', 'Twenty percent electric motors', 'assembly line')
('are pulled from', 'percent electric motors', 'assembly line')
('are', 'Twenty percent electric motors', 'pulled')
('are', 'percent electric motors', 'pulled')
最初の問題は、ということです結果に自信がない。私は何を取得していますがトリプレットの複数の組み合わせがある
('are pulled from', 'Twenty percent electric motors', 'assembly line')
:第二の問題は、私はそれだけでは、このトリプレットすなわち文のすべての単語が含まれてトリプレットを取得したいということです。私はオプション ""triple.strict":"true"
"を使用しようとしました。なぜなら "フラグメント全体を消費する場合にのみトリプルを抽出"しますが、それは機能しません。
誰もがこれについて私に助言できますか?
'openie .triple.strict = true'は、セグメンタがフラグメントのすべてのコンポーネントをセグメント化していることを認識します。あなたは 'max_entailments_per_clause = 1'と' splitter.disable = true'を設定する運が増えると思っています。 –
StanfordNLPHelp jsonのサーバーからの信頼回復が修正されたかどうか教えてください。ありがとう –