嗨,我正在尝试根据第二个最后一个例子从一串文本中提取关系:
https://web.archive.org/web/20120907184244/http://nltk.googlecode.com/svn/trunk/doc/howto/relextract.html
从诸如“出版商周刊的迈克尔詹姆斯编辑”这样的字符串中,我想要的结果是输出如下:
[PER: ‘Michael James’] ‘, editor of’ [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 =”Michael James editor of Publishers Weekly”
findrelations(text)