我了解到NLTK中有一个内置函数可以根据以下内容从NER标记的句子中提取关系:
import re
IN = re.compile(r'.*\bin\b(?!\b.+ing\b)')
for fileid in ieer.fileids():
for doc in ieer.parsed_docs(fileid):
for rel in relextract.extract_rels('ORG', 'LOC', doc, corpus='ieer', pattern = IN):
print(relextract.rtuple(rel))
对于一般用途来说,我似乎非常有希望,但我知道relextract.extract_rels
仅接受'ieer'
或'conll2002'
参数corpus
。但在这种情况下,它的使用仅限于这两个语料库,不是吗?如何将它用于自己的语料库(当然,假设它是NER标记的)。
答案 0 :(得分:1)
这应该是一个评论,但我没有足够的声誉。
您可以将自定义语料库作为doc
参数传递给它后标记并转换为分块树列表。对于自定义语料库,您应该使用corpus='ace'
。
例如,在this answer中,他们使用extract_rels
标记自定义语料库。
答案 1 :(得分:0)
r'.*\bin\b(?!\b.+ing\b)'
正则表达式究竟代表什么?我无法消除。