使用余弦相似性的Tf-Idf几乎相似的句子的文档相似性

时间:2017-10-19 12:13:04

标签: tf-idf cosine-similarity sentence-similarity

我正在使用具有余弦相似性的tf-idf来计算描述(句子)相似度

输入字符串:

    3/4x1/2x3/4 blk mi tee

以下是我需要找到类似于输入字符串

的句子的句子
      smith-cooper® 33rt1 reducing pipe tee 3/4 x 1/2 x 3/4 in npt 150 lb malleable iron black
      smith-cooper® 33rt1 reducing pipe tee 1 x 1/2 x 3/4 in npt 150 lb malleable iron black
      smith-cooper® 33rt1 reducing pipe tee 1-1/4 x 1 x 3/4 in npt 150 lb malleable iron black 
      smith-cooper® 33rt1 reducing pipe tee 1-1/2 x 3/4 x 1-1/2 in npt 150 lb malleable iron black
      smith-cooper® 33rt1 reducing pipe tee 1-1/2 x 1-1/4 x 1 in npt 150 lb malleable iron black 
      smith-cooper® 33rt1 reducing pipe tee 2 x 2 x 3/4 in npt 150 lb malleable iron black 
      smith-cooper® 33rt1 reducing pipe tee 2 x 1-1/2 x 1-1/4 in npt 150 lb malleable iron black
      smith-cooper® 33rt1 reducing pipe tee 2-1/2 x 2 x 2 in npt 150 lb malleable iron black
      smith-cooper® 33rt1 reducing pipe tee 3 x 3 x 2 in npt 150 lb malleable iron black

由于句子几乎相似,我使用的是tf-idf方法,它对所有文档(Idf)中出现的单词给出低分,并为独特单词提供更多分数,这有助于更容易地找到类似文档。

有没有比这更好的方法?

1 个答案:

答案 0 :(得分:1)

当然还有其他方法,例如潜在的语义分析,但最有效的方法完全取决于您的数据/语料库。根据我的经验,TF-IDF是一个很好的起点。更复杂的方法可能会比TF-IDF表现更差,或者相对于其复杂性而言可以提供微不足道的改进。

尝试使用TF-IDF的东西是不同大小的n-gram,以及您的语料库的其他预处理策略。根据您的示例,您可能不希望基于单词边界分割来标记您的单词;也许你想将这些句子中的一些组成部分视为单个术语,例如3/4 x 1/2 x 3/4作为单个术语。我先试验不同大小的n-gram。

在您的示例中,除了测量/尺寸之外,句子是相同的。如果此样本具有代表性,您可能需要更多地考虑如何测量这些测量之间的距离。