我想从spacy文本中提取文本值

时间:2019-03-05 16:42:39

标签: python nlp spacy information-extraction ner

我是新使用spacy的人。我想从句子中提取文本值

training_sentence="I want to add a text field having name as new data"
        OR
training_sentence=" add a field and label it as advance data"

因此,从上面的句子中,我想提取“新数据”和“高级数据”

目前,我可以使用自定义NER提取诸如“添加”,“字段”和“标签”之类的实体。

但是我无法提取文本值,因为这些值可以是任何值,而且我不确定如何使用自定义NER随意提取文本值。

我在spacy文档中看到了实体关系的代码段here 但是不知道根据我的用例来实现它。

我无法分享代码。请协助解决该问题

1 个答案:

答案 0 :(得分:1)

我不确定将其归类为纯命名实体识别问题在这里是否真的有意义。命名实体通常是专有名词和“现实世界中的对象”,例如,从“特定领域”中命名示例的人,例如“ John Doe”的人名,“ Google”的组织名或疾病或基因之类的东西。这也是spaCy的命名实体识别器所优化的。

在您的示例中,似乎大多数线索实际上都在语法中,您通常可以开箱即用地进行预测。例如,您正在寻找动词,例如“ add”和“ label”,以及它们的对象(“文本字段”)或附加的介词短语。如果您可视化语法,例如使用displacy模块,您会发现句子结构中有很多相关信息可以通过编程方式提取:

from spacy import displacy
doc = nlp("I want to add a text field having name as new data")
displacy.serve(doc)

Visualization of sentence

您还可以使用rule-based matcher查找触发标记,例如"label"(带有词性标记VERB),然后检查dependency tree来查找附加到它们的令牌。例如,如果将动词“标签”附加到介词“ as”,则可以肯定地确定附加到它的 object 是标签的名称。或者,您可以从句子的开头开始,遍历其subtree,然后检查它是否包含您感兴趣的标记或构造。

您可能需要做一些试验,最终可能会遇到许多不同的规则,以涵盖数据中常见的不同类型的构造。