我的团队进行了很多聊天机器人培训,我正在尝试提出一些工具来提高我们的工作质量。在聊天机器人培训中,以多种不同的方式表达意图相同的意图的意图进行训练非常重要。理想情况下,集合中话语的语法几乎没有相似性。
以下是一个有意询问医疗保险范围的示例
话语集
体面的讲话集
如何查询我们是否为整个家庭提供保险?
寻求医疗资格的详细信息
是否有文件详细说明谁受我们的医疗保险政策保护?
我希望能够接受与意图相关的所有话语,并分析它们的相似性。我希望我的不良话语集具有较高的相似度得分,而我的一系列体面话语集具有较低的相似度得分。
我尝试过玩一些doc2vec教程,但是我感觉缺少一些东西。我一直看到这样的东西:
我需要有一系列的句子,并了解它们之间的相似程度。
对实现这一目标有何建议?
回答一些问题:
答案 0 :(得分:0)
文本向量的大多数应用都受益于向量捕获文本的“基本含义”,而无需考虑词选择中的差异。
如果两个具有相似含义的完全不同的措词具有几乎相同的向量,则它被认为是一个功能,而不是缺陷。 (或者,如果某些相似性度量表明它们完全相似。)
例如,要构想一个类似于您的示例,请考虑以下两个措辞:
“兄弟的健康保险” “男性同胞医疗保险”
没有重复使用单词,但是可能的预期含义是相同的-因此,针对典型目的的良好文本向量化将创建非常相似的向量。使用这些向量或以其他方式使用词/词向量作为输入的相似性度量将表明非常高的相似性。
但是从您的澄清答案来看,您似乎实际上需要一个更肤浅的“相似性”度量。您想要一种可以揭示某些措辞何时在措辞上显示出多样性/差异的度量。 (特别是,您已经从其他因素(例如它们的手工方式)中知道,这些短语的组在语义上是相关的。)
您希望这种相似性度量显示的实际上是一种行为,许多使用文本向量的项目会认为这些向量是失败的。因此,诸如Word2Vec,段落向量(又称为“ Doc2Vec”)之类的语义方法可能是实现目标的错误工具。
仅基于文字或字符n-gram的简单度量可能会做得很好。
例如,对于两个文本A和B,您可以计算共享词的数量(同时出现在A和B中),然后除以A和B中唯一词的总数,得出0.0到1.0“单词选择相似度”数字。
并且,当针对一组先前的文本考虑一个新文本时,如果它与先前的文本的平均相似度很低,则对于您的目的而言将是“良好”的。
您不仅可以使用单词,还可以使用文本的所有n个字符子字符串(“ n-grams”),这可能有助于更好地突出显示单词形式或常见错别字之间的差异,这也可能对你的目的。
通常,我将通过scikit-learn文本向量化功能来获取想法:
https://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction