是否有任何好的 NLP API 用于在语义相似性方面比较字符串?

数据挖掘 机器学习 Python nlp 相似 软件推荐
2021-10-02 14:49:57

我想创建一个聊天机器人来通知用户街道上的交通情况,但目前不是实时的。我已经使用 MySQL 创建了一个小型数据库,其中存储了一些关于流量的数据,并且我在适当的时候使用 PHP 脚本获取它们,具体取决于用户与聊天机器人的交互。

我想知道当用户询问相同问题的变体时如何处理这种情况,因此可以用相同的答案来回答。例如:

  • 为什么高街有车流?
  • 高街堵车的原因是什么?
  • 为什么我在高街遇到交通拥堵?
  • 我在大街上堵车了。为什么是这样?

显然,我可以从删除停用词(例如 did)、命名实体(例如 road -> High Street)、定义同义词和应用文本相似性度量(例如 Levenshtein 距离等)开始。

但是,如果我这样做,我觉得我想重新发明轮子。因此,我的问题是:

是否有任何 API 可以根据语义相似性比较字符串(甚至不需要培训)?

我知道有适合这些任务的软件平台,例如 Dialogflow,但您仍然必须明确说明同一问题的所有变体,以便您得到相同的答案。因此,我寻找一个 API,您将在其中明确说明同一问题的这些变体中的一个(例如,为什么在大街上有交通?)然后 API 将自行找出哪些其他变体与它相同意义与否。

4个回答

您可以使用 Google 的 Universal Sentence Encoder 并使用余弦相似度或向量表示之间的角距离来计算文本之间的相似度。

我可以用深度学习方法给你一些提示。

使用 gensim 和 sklearn python 库很容易。首先,您需要提取作为数字向量的词嵌入来表示一个单词,然后取句子中单词的平均值,这是一种为您的句子优化向量表示的方法。

因此,请在此处使用此指南提取您的词嵌入之后尝试使用 sklearn 的余弦相似度来比较它们的真实程度。

使用LSA(潜在语义分析)算法进行语义相似性。这将对您的要求有用

我想你要找的是语义相似度,你可以在这里从 spacy尝试,否则你甚至可以余弦相似度sklearn中去。

希望这可以帮助。如果有人发现任何更正或其他建议。我很乐意得到纠正。