如何处理NLP中的两种实体提取方法

2023-12-07

我正在使用两种不同的实体提取方法(https://rasa.com/docs/nlu/entities/)同时在 RASA 框架中构建我的 NLP 模型以构建聊天机器人。 机器人应该处理具有自定义实体以及一些一般问题(例如位置或组织)的不同问题。 因此,我使用 ner_spacy 和 ner_crf 两个组件来创建模型。之后,我用 python 构建了一个小帮助程序脚本来评估模型性能。在那里我注意到模型很难选择正确的实体。

例如,对于单词“X”,它选择了 SpaCy 中的预定义实体“ORG”,但它应该被识别为我在训练数据中定义的自定义实体。

如果我只使用 ner_crf 提取器,我在识别大写字母等位置实体时会遇到巨大的问题。我最大的问题之一也是单一答案实体。

问:“你最喜欢什么动物?”

A : Dog

我的模型无法为这个单一答案提取这个单一实体“动物”。如果我用“狗”这样的两个词回答这个问题,模型就可以毫无问题地提取值为“狗”的动物实体。

所以我的问题是,使用两个不同的组件来提取实体是否聪明?一种用于自定义实体,另一种用于预定义实体。 如果我使用两种方法,模型中使用哪个提取器的机制是什么?

顺便说一句,目前我只是在测试,所以我的训练样本并没有应有的那么大(少于 100 个示例)。如果我有更多的训练样本,问题能解决吗?


你在这里面临两个问题。我建议一些我认为有用的方法。

1.自定义实体识别:为了解决这个问题,您需要添加更多具有所有可能长度的实体的训练句子。ner_crf当实体周围有可识别标记(例如介词)时,可以更好地预测

2. 从单个单词答案中提取实体:作为解决方法,我建议您在客户端进行以下操作。

当您发送类似问题时What´s your favorite animal?,在问题上附加一个标记,以向客户表明需要一个答案。例如 你可以发送##SINGLE## What´s your favorite animal?给客户。

客户端可以删除##SINGLE##来自问题并将其显示给用户。但是当客户端将用户的响应发送到服务器时,它不会发送Dog,它发送类似的东西User responded with single answer as Dog

您可以训练模型从此类答案中提取实体。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理NLP中的两种实体提取方法 的相关文章

  • 这个 NLP 问题层次结构描述中的最大池化是什么类型

    我正在尝试实现这个描述以及我所做的 我生成了形状的 uni gram bi gram tri gram 15 512 使用填充 然后对于每个单词 我连接三个特征向量 3 512 然后我向他们申请 Globalmaxpooling1D 我不知
  • 从文本文件中提取与输入单词最相似的前 N ​​个单词

    我有一个文本文件 其中包含我使用 BeautifulSoup 提取的网页内容 我需要根据给定的单词从文本文件中找到 N 个相似的单词 流程如下 从中提取文本的网站 https en wikipedia org wiki Football h
  • 用于估计(一元)困惑度的 NLTK 包

    我正在尝试计算我所拥有的数据的困惑度 我正在使用的代码是 import sys sys path append usr local anaconda lib python2 7 site packages nltk from nltk co
  • 每个 System.ComponentModel.DataAnnotations 属性的用途是什么?

    我正在使用带有 POCO 的实体框架 4 制作 MVC 3 应用程序 我想尽可能多地注释我的所有实体 然而 我遇到一个问题 我无法找到有关每个属性含义的良好文档 有些非常简单 比如 Required or StringLength 具有像这
  • BERT 输出不确定

    BERT 输出是不确定的 当我输入相同的输入时 我希望输出值是确定性的 但我的 bert 模型的值正在变化 听起来很尴尬 同一个值返回两次 一次 也就是说 一旦出现另一个值 就会出现相同的值并重复 如何使输出具有确定性 让我展示我的代码片段
  • 如何注册hibernate spring实体监听器

    我已经构建了一个实体侦听器 但尚未弄清楚如何注册它以便调用它 这一切都运行了 我在调试器中验证了 注册代码在启动时执行 显然成功 但调试器永远不会停止在侦听器代码中 这是我的听众 public class DirtyAwareListene
  • 使用正则表达式标记化进行 NLP 词干提取和词形还原

    定义一个函数 名为performStemAndLemma 它需要一个参数 第一个参数 textcontent 是一个字符串 编辑器中给出了函数定义代码存根 执行以下指定任务 1 对给出的所有单词进行分词textcontent 该单词应包含字
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http
  • 如何提取句子中的主语及其各自的从属短语?

    我正在尝试在句子中进行主题提取 以便我能够根据主题获得情感 我在用nltk在 python2 7 中用于此目的 以下面的句子为例 Donald Trump is the worst president of USA but Hillary
  • 如何将标记化中的多单词名称保留在一起?

    我想使用 TF IDF 特征对文档进行分类 一种方法是 from sklearn feature extraction text import TfidfVectorizer import string import re import n
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 用于词性标记的优秀 Java 库是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用“自然”语言编写代码更好吗?

    我最近看到一种编程语言叫做超新星 http supernova sourceforge net 他们在网页上说 超新星编程语言是 现代脚本语言和 第一个提出了概念 用直接虚构进行编程 描述使用 纯人类语言的清晰子集 你可以编写如下代码 i
  • 如何使用动词时态/语气制作稀疏匹配器模式?

    我一直在尝试使用动词时态和情绪为 spacy 匹配器创建一个特定的模式 我发现了如何使用 model vocab morphology tag map token tag 访问使用 spacy 解析的单词的形态特征 当动词处于虚拟语气模式
  • 如何从 Pandas DataFrame 转换为 Tensorflow BatchDataset 以进行 NLP?

    老实说 我想弄清楚如何转换数据集 格式 pandasDataFrame或 numpy 数组 转换为简单文本分类张量流模型可以训练用于情感分析的形式 我使用的数据集类似于 IMDB 包含文本和标签 正面或负面 我看过的每个教程要么以不同的方式
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • nltk 标记化和缩写

    我用 nltk 对文本进行标记 只是将句子输入到 wordpunct tokenizer 中 这会拆分缩写 例如 don t 到 don t 但我想将它们保留为一个单词 我正在改进我的方法 以实现更精确的文本标记化 因此我需要更深入地研究
  • Symfony 2:实体的位置

    我是 Symfony 2 的新手 我想知道一些事情 假设我的项目中有 2 个捆绑包 我想在两个包中使用从我的数据库生成的实体 我应该在哪里生成实体 对我来说 最好的方法是在捆绑包之外 但我不知道如何做到这一点 感谢您的帮助 我认为有两种解决

随机推荐