【问题标题】:Computing a similarity score for a set of sentences计算一组句子的相似度分数
【发布时间】:2019-01-25 23:14:07
【问题描述】:

我的团队进行了大量的聊天机器人培训,我正在尝试提供一些工具来提高我们的工作质量。在聊天机器人训练中,训练具有不同表达方式的意图非常重要,这些表达方式以非常不同的方式表达相同的意图。理想情况下,集合中话语的语法几乎没有相似之处。

这是一个查询医疗保险范围的意图示例

糟糕的话语集

  • 我女儿有保险吗?
  • 我儿子有医疗保险吗?
  • 我儿子有保险吗?

体面的话语集

  • 如何查询我们是否为全家投保?

  • 寻求医疗保险资格的详细信息

  • 是否有文件详细说明我们的医疗保险政策保护的对象?

我希望能够获取与意图相关的所有话语并分析它们的相似性。我希望我的一组不好的话语具有较高的相似度得分,而我的一组体面的话语具有较低的相似度分数。

我尝试过一些 doc2vec 教程,但我觉得我错过了一些东西。我经常看到这样的东西:

  • 训练一组数据,然后衡量一个新句子与您的一组数据的相似度
  • 衡量两个句子之间的相似度

我需要有一组句子并了解它们之间的相似程度。

对实现这一点有什么建议吗?

回答一些问题:

  1. 是什么让糟糕的话语变得糟糕?话语本身并不糟糕,只是它们之间缺乏多样性。如果大部分训练都像“坏”集一样,那么将无法正确识别更多种类的真实用户话语。
  2. 您是否正在尝试发现新的意图?不,这是针对发布前培训的,旨在提高它的有效性。
  3. 为什么不好的话语具有高相似性分数而良好的话语具有低相似性分数?这是一个假设。我知道真实的用户话语有多么不同,我发现我的培训师在训练时陷入了困境,以同样的方式提出问题,并且没有看到良好的准确性结果。改善话语的多样性往往会提高准确性。
  4. 我将如何处理这些信息?我将使用它来评估意图的训练质量,以确定是否可能需要更多的训练。将来我们可能会构建实时工具,因为正在添加话语以让培训师知道它们是否过于重复。

【问题讨论】:

  • 您能否在问题中澄清一下:(1)是什么让“坏话”变得不好? (2) 是否所有话语都已与意图相关联,或者您是否正在尝试发现新意图和/或将新话语与先前意图相关联? (3) 为什么你期望“坏”的话语具有高相似度(彼此之间?),而“体面”的话语具有低相似度分数? (4) 最终目标是什么——你打算如何处理模拟分数?如果一对句子(或组内的所有句子对)有“high sim”或“low sim”,你将如何处理这些信息?舍弃一些句子?
  • 好问题。我会在原始问题中给出答案
  • @gojomo 让我知道我所做的编辑是否回答了您的问题
  • 这很有帮助......所以看起来真正的目标是确定这些句子(意味着作为某些其他过程/算法的训练输入)具有大量表面种类?因此,向一些人类培训师提供反馈,促使他们生成更好(更多样化)的示例?
  • @gojomo 没错

标签: machine-learning nlp word2vec doc2vec sentence-similarity


【解决方案1】:

文本向量的大多数应用都受益于捕获文本“基本含义”的向量,**没有*考虑单词选择的差异。

也就是说,如果两个具有相似含义的完全不同的措辞具有几乎相同的向量,则它被认为是一个特征,而不是一个缺陷。 (或者,如果某些相似性度量表明它们完全相似。)

例如,要设计一个与您类似的示例,请考虑以下两个措辞:

“兄弟的健康保险” “同胞医保”

没有重复使用单词,但可能的预期含义是相同的——因此用于典型目的的良好文本向量化将创建非常相似的向量。并且使用这些向量的相似性度量,或以其他方式使用单词/单词向量作为输入,将表明相似性非常高。

但从您澄清的答案来看,您似乎实际上想要一个更肤浅的“相似性”衡量标准。您想要一个衡量某些措辞何时在其措辞中表现出多样性/对比的衡量标准。 (具体来说,您已经知道其他因素,例如它们是如何手工制作的,这些短语的组在语义上是相关的。)

您希望此相似性度量显示的实际上是许多使用文本向量的项目会认为向量失败的行为。因此,像 Word2Vec、段落向量(又名“Doc2Vec”)等中的语义方法可能不适合您的目标。

您可以根据文本的单词或字符-n-gram 进行更简单的测量。

例如,对于两个文本 A 和 B,您可以只计算共享词的数量(同时出现在 A 和 B 中),然后除以 A 和 B 中的唯一词总数,得到0.0 到 1.0 “单词选择相似度”数。

并且,在针对一组先前文本考虑新文本时,如果它与先前文本的平均相似度较低,那么它对您的目的来说是“好”的。

除了单词之外,您还可以使用文本的所有 n 字符子字符串(“n-gram”)——这可能有助于更好地突出单词形式的差异或常见的拼写错误,这也可能是有用的差异你的目的。

一般来说,我会看看 scikit-learn 文本矢量化功能的想法:

https://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多