实体检测-与英文单词冲突的实体

时间:2019-06-11 09:40:50

标签: python nlp spacy luis named-entity-extraction

我的句子如下:

  • what is the sales org for fpc 1234 for IS?
  • give me sales org for fpc 12234 for IS?
  • give me sales org for fpc 12234 with scope ME?

在以上句子中,我要查找的实体分别为ISISME。这些实体包括ISMEANAM,这些实体在构建英语句子时很常见。我正在使用LUIS进行实体检测并将实体维护为列表实体。问题是,尽管LUIS能够检测到实体(ISANAM),但它可以像普通句子一样检测它们

  • what is the sales org for fpc 1234

在上面的句子中,我们没有任何实体,但是实体IS被拾取。

仅当实体被实际寻址而不是句子构造的一部分时,我们如何检测它们。

需要注意的几点:

  • 实体列表真的很长,无法训练实体而不是使用实体
  • 我们无法通过硬编码两次找到一个实体的出现,因为它可能会失败,如下所示:
    • give me sales org for fpc 12234 for IS?
    • ME,IS不会出现两次,因此不能用于创建规则。
  • 问题不在于LUIS,而是通常是实体提取。我也在查看POS标记,但这需要该实体以大写字母出现才能将其标识为名词,但并非总是如此。
    • 还刚刚使用Spacy试用了POS标签。结果如下。
    • 哪个销售组织将TO扩展到fpc 1234? -TO被归类为介词(实际上是。) enter image description here
    • 具有范围IS的fpc 1234的销售组织是什么? -IS被分类为动词 enter image description here

2 个答案:

答案 0 :(得分:1)

正如您所说,对句子的正确解析将为您提供PoS标签,这将帮助您获得正确的答案。不幸的是,您显示的示例语法不佳,因此即使最好的解析器也可能会遇到困难。

您是否有足够的策划数据来训练神经网络? LSTM可能设法充分了解这些句子中实际使用的语法,从而成功完成NER。

在您给出的示例中,要查找的名称都是单个标记。如果这是典型的做法,它将使工作变得更容易。

下面的评论说没有足够的数据来训练神经网络。给出的几个例子非常刻板。是否可以使用上一个和下一个标记作为预测因子来训练Naive Bayes分类器?

答案 1 :(得分:1)

您可能已经发现non-machine-learned entities在您的情况下并不理想,因为它们没有考虑到上下文。我想您有几个选择。

选项1:简单实体

我刚刚通过将您的三种话语添加到名为“ Sales org”的意图中,然后创建一个名为“ Scope”的simple entity进行了测试。我在这些话语的末尾将IS,IS和ME标记为Scope实体。当我测试“将fpc 12234的销售组织交给我吗?”时,LUIS能够正确地将“ is”标识为实体,而不是“ me”。

调用LUIS后,您的漫游器代码即可验证可识别的实体,以确保其在可接受值的列表内。

选项2:角色

如果您仍想使用列表实体,则仍可以使用contextual information使LUIS为您提供关于实体的roles

我刚刚通过创建一个名为“ ScopeName”的实体进行了测试,并使用了四个值IS,ME,AN和AM。然后,我为该实体创建了两个角色:“作用域”和“ falsePositive”。然后,我在“销售组织”话语中标记了实体,如下所示:

enter image description here

如果您这样做,LUIS仍会在它们不希望被识别的句子部分中识别IS,ME,AN和AM,但是您会知道在其中忽略它们您的漫游器代码,因为它们将被分配为“ falsePositive”角色。