2016-07-06 25 views
0

我了解到,有在NLTK内置功能,可以提取根据以下从NER标记的句子关系:NLTK关系萃取 - relextract.extract_rels定制语料库

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

这应该是更多的评论,但我没有足够的声誉。

在pos标记并转换为分块树列表后,您可以将自定义语料库作为doc参数传递。对于自定义语料库,您应该使用corpus='ace'

例如,在this answer中,他们使用extract_rels来标记自定义语料库。

+0

谢谢。我有点困惑,为什么在这里需要'doc'和'corpus'呢?这里只需要一个文本输入,即要提取的分块文本。语料库在这里添加了什么? – Hendrik

+0

查看源代码[here](http://www.nltk.org/_modules/nltk/sem/relextract.html)'corpus'定义了与不同的可能语料库参数相关联的NE(名称 - 实体)类。看看字典'NE_CLASSES'。 –

0

r'.*\bin\b(?!\b.+ing\b)'正则表达式在这里的含义是什么?我不能跳。