我是新使用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 但是不知道根据我的用例来实现它。
我无法分享代码。请协助解决该问题
答案 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)
您还可以使用rule-based matcher查找触发标记,例如"label"
(带有词性标记VERB
),然后检查dependency tree来查找附加到它们的令牌。例如,如果将动词“标签”附加到介词“ as”,则可以肯定地确定附加到它的 object 是标签的名称。或者,您可以从句子的开头开始,遍历其subtree
,然后检查它是否包含您感兴趣的标记或构造。
您可能需要做一些试验,最终可能会遇到许多不同的规则,以涵盖数据中常见的不同类型的构造。