こんにちは、最後の 2 番目の例に基づいて、テキストの文字列から関係を抽出しようとしています: https://web.archive.org/web/20120907184244/http://nltk.googlecode.com/svn/trunk/doc /howto/relextract.html
「Publishers Weekly の Michael James 編集者」などの文字列から、次のような出力を得たいと考えています。
[PER: 'Michael James'] '、編集者' [ORG: 'Publishers Weekly']
これを行う最善の方法は何ですか?extract_rels が期待するフォーマットと、その要件を満たすために入力をフォーマットするにはどうすればよいですか?
自分でやってみましたがうまくいきませんでした。ここに私が本から適応させたコードがあります。結果が印刷されません。私は何を間違っていますか?
class doc():
pass
doc.headline = ['this is expected by nltk.sem.extract_rels but not used in this script']
def findrelations(text):
roles = """
(.*(
analyst|
editor|
librarian).*)|
researcher|
spokes(wo)?man|
writer|
,\sof\sthe?\s* # "X, of (the) Y"
"""
ROLES = re.compile(roles, re.VERBOSE)
tokenizedsentences = nltk.sent_tokenize(text)
for sentence in tokenizedsentences:
taggedwords = nltk.pos_tag(nltk.word_tokenize(sentence))
doc.text = nltk.batch_ne_chunk(taggedwords)
print doc.text
for rel in relextract.extract_rels('PER', 'ORG', doc, corpus='ieer', pattern=ROLES):
print relextract.show_raw_rtuple(rel) # doctest: +ELLIPSIS
text ="パブリッシャーズ ウィークリーのマイケル ジェームズ編集者"
findrelations(テキスト)