【发布时间】:2011-10-21 15:46:10
【问题描述】:
这是follow-up of my question。我正在使用 nltk 来解析人员、组织及其关系。使用this example,我能够创建大量的人和组织;但是,我在 nltk.sem.extract_rel 命令中遇到错误:
AttributeError: 'Tree' object has no attribute 'text'
完整代码如下:
import nltk
import re
#billgatesbio from http://www.reuters.com/finance/stocks/officerProfile?symbol=MSFT.O&officerId=28066
with open('billgatesbio.txt', 'r') as f:
sample = f.read()
sentences = nltk.sent_tokenize(sample)
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences]
chunked_sentences = nltk.batch_ne_chunk(tagged_sentences)
# tried plain ne_chunk instead of batch_ne_chunk as given in the book
#chunked_sentences = [nltk.ne_chunk(sentence) for sentence in tagged_sentences]
# pattern to find <person> served as <title> in <org>
IN = re.compile(r'.+\s+as\s+')
for doc in chunked_sentences:
for rel in nltk.sem.extract_rels('ORG', 'PERSON', doc,corpus='ieer', pattern=IN):
print nltk.sem.show_raw_rtuple(rel)
此示例与given in the book 非常相似,但该示例使用准备好的“已解析文档”,它出现在任何地方,我不知道在哪里可以找到它的对象类型。我也浏览了 git 库。任何帮助表示赞赏。
我的最终目标是提取一些公司的人员、组织、头衔(日期);然后创建个人和组织的网络地图。
【问题讨论】:
-
你有想过这个吗?我可以看看你想出了什么,因为我遇到了完全相同的问题。