Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用spacy的名称实体识别提供一个包含元组的关系提取数据集,用于随意推理?_Python_Nlp_Spacy_Ner_Relationship Extraction - Fatal编程技术网

Python 如何使用spacy的名称实体识别提供一个包含元组的关系提取数据集,用于随意推理?

Python 如何使用spacy的名称实体识别提供一个包含元组的关系提取数据集,用于随意推理?,python,nlp,spacy,ner,relationship-extraction,Python,Nlp,Spacy,Ner,Relationship Extraction,我有大约7000个句子,我使用SpaCy对这些句子进行了精细的名称实体识别(即,针对特定实体)。现在我想做关系提取(基本上是因果推理),我不知道如何使用NER来提供训练集 据我所知,有不同的方法来执行关系提取: 1) 手写图案 2) 监督机器学习 3) 半监督机器学习 因为我想使用监督机器学习,所以我需要训练数据 如果有人能给我指点方向就好了,非常感谢。这是我的数据框的屏幕截图,实体由定制的spaCy模型提供。我可以访问spaCy给出的每个句子的句法依赖项和词性标记: 您的数据集似乎是某种技

我有大约7000个句子,我使用SpaCy对这些句子进行了精细的名称实体识别(即,针对特定实体)。现在我想做关系提取(基本上是因果推理),我不知道如何使用NER来提供训练集

据我所知,有不同的方法来执行关系提取:

  • 1) 手写图案
  • 2) 监督机器学习
  • 3) 半监督机器学习
因为我想使用监督机器学习,所以我需要训练数据

如果有人能给我指点方向就好了,非常感谢。这是我的数据框的屏幕截图,实体由定制的spaCy模型提供。我可以访问spaCy给出的每个句子的句法依赖项和词性标记:


您的数据集似乎是某种技术性的写作,结构非常好,因此可能词性标记足以完成您想要的提取

我建议您阅读本文,了解所使用的基于pos标签的模式

下面的代码段用词性标记标记发送的a,然后查找与所称混响模式匹配的序列

import nltk

verb = "<ADV>*<AUX>*<VBN><IN|PART>*<ADV>*"
word = "<NOUN|ADJ|ADV|DET|ADP>"
preposition = "<ADP|ADJ>"

rel_pattern = "( %s (%s* (%s)+ )? )+ " % (verb, word, preposition)
grammar_long = '''REL_PHRASE: {%s}''' % rel_pattern
reverb_pattern = nltk.RegexpParser(grammar_long)

sent = "where the equation caused by the eccentricity is maximum."
sent_pos_tags = nltk.tag.pos_tag("where the equation caused by the eccentricity is maximum".split())

for x in reverb_pattern.parse(tags):
  if isinstance(x, nltk.Tree) and x.label() == 'REL_PHRASE':
     rel_phrase = " ".join([t[0] for t in x.leaves()])
    print(rel_phrase)
导入nltk

动词=“举一个更详细的例子。我希望能有所帮助。

我想我能理解你想做什么,你能举几个例子说明你想做什么吗?还有一件事,如果你没有训练数据,那就没有魔法,你将不得不依靠手写规则或某种半监督/自举方法。但是,请给出一些例子,说明根据该数据集上的信息,您到底想提取什么。再次感谢David的友好回答,想象一下我想提取“偶然关系”,如这句话:“偏心率引起的方程是最大值。”我需要提取(方程,由,最大值引起)或(obs1,偶然关系,obs2)请相应地更新您的问题,添加一个或多个示例,以便遇到问题的其他人也能了解您想要实现的目标。非常感谢您的回答,特别是lin的连接非常紧密。我会检查一下。我将“发送位置标记”作为“标记”,我说的对吗?但即便如此,它也只摘录了“由”关系引起的。最后一期。你认为斯帕西值得在上面写吗?@David Batista会很高兴你的宝贵评论“你认为斯帕西值得在上面写吗”我真的不明白你的意思,请阅读这篇文章,试着理解基于pos标签的关系提取是如何工作的,这会让你从很多困惑中清醒过来。再次非常感谢你,我的意思是简单地使用SpaCy而不是nltk,当然我已经读过了,我会一直读到明天,我希望可以通过spaCy在我的数据上轻松实现,对我来说,如果我能提供我已经完成的训练数据,这是非常关键的!现在我有一些动词作为关系的句子,我不知道如何继续!你能给我一些提示吗?非常感谢