我有两个句子,S1 和 S2,它们的字数(通常)都低于 15。
什么是最实用和最成功的(机器学习)算法,它们可能很容易实现(神经网络是可以的,除非架构像谷歌 Inception 等那样复杂)。
我正在寻找一种无需花费太多时间就能正常工作的算法。有没有你发现成功且易于使用的算法?
这可以但不必属于聚类的范畴。我的背景是机器学习,所以欢迎任何建议:)
我有两个句子,S1 和 S2,它们的字数(通常)都低于 15。
什么是最实用和最成功的(机器学习)算法,它们可能很容易实现(神经网络是可以的,除非架构像谷歌 Inception 等那样复杂)。
我正在寻找一种无需花费太多时间就能正常工作的算法。有没有你发现成功且易于使用的算法?
这可以但不必属于聚类的范畴。我的背景是机器学习,所以欢迎任何建议:)
你可以回答向量空间的余弦相似度。
或者你可以计算每个句子的特征向量。但问题是,什么是相似性?
“这是一棵树”,“这不是一棵树”
如果你想检查句子的语义,你需要一个词向量数据集。使用 wordvector 数据集,您将能够检查单词之间的关系。示例:(国王 - 男人 + 女人 = 女王)
Siraj Raval 有一个很好的python notebook用于创建 wordvector 数据集。
您可以尝试的一种方法是平均由词嵌入算法(word2vec、glove 等)生成的词向量。这些算法为每个单词创建一个向量,它们之间的余弦相似度表示单词之间的语义相似度。在句子之间的平均向量的情况下。了解更多关于这些方法的一个很好的起点是这篇论文:句子嵌入如何捕捉含义。它讨论了一些句子嵌入方法。我还建议您研究使用组合 n-Gram 特征进行句子嵌入的无监督学习,作者声称他们的方法优于最先进的方法。他们还在这个github repo中提供了代码和一些使用说明。
bert-as-service提供了这种解决方案。
要回答你的问题,从零开始自己实现它会非常困难,因为 BERT 不是一个微不足道的 NN,但是使用这个解决方案,你可以将它插入到使用句子相似度的算法中。