Answers:
向量空间的余弦相似度可能是您的答案:http : //blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/
或者,您可以计算每个句子的特征向量。但是问题是,什么是相似性?
“这是一棵树”,“这不是一棵树”
如果要检查句子的语义,则需要一个wordvector数据集。使用wordvector数据集,您将能够检查单词之间的关系。例如:(国王-男人+女人=女王)
Siraj Raval有一个很好的Python笔记本,可用于创建wordvector数据集:https : //github.com/llSourcell/word_vectors_game_of_thrones-LIVE
您可以尝试的一种方法是平均由词嵌入算法(word2vec,g手套等)生成的词向量。这些算法为每个单词创建一个向量,它们之间的余弦相似度表示单词之间的语义相似度。对于句子中的平均向量。本文是了解更多有关这些方法的一个很好的起点:句子嵌入如何很好地捕获含义。它讨论了一些句子嵌入方法。我还建议您研究使用合成n语法功能进行的无监督句子嵌入学习,作者声称他们的方法优于最新方法。他们还在此github存储库中提供了代码和一些用法说明。
bert-as-service(https://github.com/hanxiao/bert-as-service#building-a-qa-semantic-search-engine-in-3-minutes)提供了该解决方案。
要回答您的问题,因为BERT并非无关紧要的NN,因此很难自己实现为零,但是使用此解决方案,您只需将其插入使用句子相似性的算法即可。
您应该查看https://github.com/seatgeek/fuzzywuzzy#usage。Fuzzywuzzy是一个很棒的字符串/文本匹配库,它根据两个句子的相似程度给出一个介于0到100之间的数字。它使用Levenshtein距离来计算简单易用的程序包中序列之间的差异。另外,请查看此博客文章,以详细了解Fuzzywuzzy如何完成这项工作。这个博客也是由Fuzzywuzzy作者撰写的
该博客提供了短文本相似性的解决方案。他们主要使用BERT神经网络模型来查找句子之间的相似性。 https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e