Nlp 人与城市/国家关系提取

Nlp 人与城市/国家关系提取,nlp,nltk,named-entity-recognition,information-extraction,spacy,Nlp,Nltk,Named Entity Recognition,Information Extraction,Spacy,我试着用一个句子来提取人物(PER)和地点(GPE)之间的关系 约翰来自俄亥俄州,迈克尔来自佛罗里达州,丽贝卡来自田纳西州的纳什维尔 对于最后一个人,她既有一个城市,也有一个州,可以作为她的地方。到目前为止,我已经尝试使用nltk来实现这一点,但只能提取她的城市,而不能提取她的州 我所尝试的: import re from nltk import ne_chunk, pos_tag, word_tokenize from nltk.sem.relextract import extract_re

我试着用一个句子来提取人物(PER)和地点(GPE)之间的关系

约翰来自俄亥俄州,迈克尔来自佛罗里达州,丽贝卡来自田纳西州的纳什维尔

对于最后一个人,她既有一个城市,也有一个州,可以作为她的地方。到目前为止,我已经尝试使用nltk来实现这一点,但只能提取她的城市,而不能提取她的州

我所尝试的:

import re
from nltk import ne_chunk, pos_tag, word_tokenize
from nltk.sem.relextract import extract_rels, rtuple

sentence = "John is from Ohio, Michael is from Florida and Rebecca is from Nashville which is in Tennessee."
chunked = ne_chunk(pos_tag(word_tokenize(sentence)))
ISFROM = re.compile(r'.*\bfrom\b.*')
rels = extract_rels('PER', 'GPE', chunked, corpus = 'ace', pattern = ISFROM)
for rel in rels:
    print(rtuple(rel))
我的输出是:

[PER: 'John/NNP'] 'is/VBZ from/IN' [GPE: 'Ohio/NNP']
[PER: 'Michael/NNP'] 'is/VBZ from/IN' [GPE: 'Florida/NNP']
[PER: 'Rebecca/NNP'] 'is/VBZ from/IN' [GPE: 'Nashville/NNP']

问题是丽贝卡。我怎样才能确定纳什维尔和田纳西都是她所在地的一部分?或者仅仅是田纳西州?

在我看来,您必须首先提取区域内关系(田纳西州的纳什维尔)。然后确保您将所有位置以过渡方式分配给Rebecca(如果Rebecca在纳什维尔,纳什维尔在田纳西州,那么Rebecca在纳什维尔,Rebecca在田纳西州)

这将是上述推理的一种关系类型和一些逻辑(事情很快变得复杂,但很难避免)