从NLTK中的句子中提取关系
我正在使用NLTK来提取PERSON和ORGANIZATION之间的关系。
另外,我想提取ORGANIZATION和LOCATION之间的关系。 NLTK版本是3.2.1。
我已经使用了词性标注和命名实体识别(NER)。 此外,为NER结果绘制分析树。
但我无法从这句话中提取上述关系。
代码如下:
import nltk, re
from nltk import word_tokenize
sentence = "Mark works at JPMC in London every day"
pos_tags = nltk.pos_tag(word_tokenize(sentence)) # POS tagging of the sentence
ne = nltk.ne_chunk(pos_tags) # Named Entity Recognition
ne.draw() # Draw the Parse Tree
IN = re.compile(r'.*binb(?!b.+ing)')
for rel1 in nltk.sem.extract_rels('PER', 'ORG', pos_tags, pattern = IN):
print(nltk.sem.rtuple(rel1))
for rel2 in nltk.sem.extract_rels('ORG', 'LOC', pos_tags, pattern = IN):
print(nltk.sem.rtuple(rel2))
如何提取“人 - 组织”关系和“组织 - 位置”关系?
我认为docs没有被标记为pos,它应该是NE。
工作代码
senten = "Mark works in JPMC in London every day"
pos_tags = nltk.pos_tag(word_tokenize(senten)) # POS tagging of the sentence
ne = nltk.ne_chunk(pos_tags) # Named Entity Recognition
chunked = nltk.ne_chunk_sents(pos_tags, binary=True)
# ne.draw() # Draw the Parse Tree
print(pos_tags)
IN = re.compile(r'.*binb(?!b.+ing)')
for rel in nltk.sem.extract_rels('PERSON', 'ORGANIZATION', ne, corpus='ace', pattern=IN):
print(nltk.sem.rtuple(rel))
产量
[PER:'Mark / NNP']'works / VBZ in / IN'[ORG:'JPMC / NNP']
链接地址: http://www.djcxy.com/p/65167.html