word分词提供了两种文本相似度计算方式:
方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度
实现类:org.apdplat.word.analysis.CosineTextSimilarity
用法如下: - String text1 = "我爱学习";
- String text2 = "我爱读书";
- String text3 = "他是黑客";
- TextSimilarity textSimilarity = new CosineTextSimilarity();
- double score1pk1 = textSimilarity.similarScore(text1, text1);
- double score1pk2 = textSimilarity.similarScore(text1, text2);
- double score1pk3 = textSimilarity.similarScore(text1, text3);
- double score2pk2 = textSimilarity.similarScore(text2, text2);
- double score2pk3 = textSimilarity.similarScore(text2, text3);
- double score3pk3 = textSimilarity.similarScore(text3, text3);
- System.out.println(text1+" 和 "+text1+" 的相似度分值:"+score1pk1);
- System.out.println(text1+" 和 "+text2+" 的相似度分值:"+score1pk2);
- System.out.println(text1+" 和 "+text3+" 的相似度分值:"+score1pk3);
- System.out.println(text2+" 和 "+text2+" 的相似度分值:"+score2pk2);
- System.out.println(text2+" 和 "+text3+" 的相似度分值:"+score2pk3);
- System.out.println(text3+" 和 "+text3+" 的相似度分值:"+score3pk3);
复制代码运行结果如下: - 我爱学习 和 我爱学习 的相似度分值:1.0
- 我爱学习 和 我爱读书 的相似度分值:0.4
- 我爱学习 和 他是黑客 的相似度分值:0.0
- 我爱读书 和 我爱读书 的相似度分值:1.0
- 我爱读书 和 他是黑客 的相似度分值:0.0
- 他是黑客 和 他是黑客 的相似度分值:1.0
复制代码方式二:简单共有词,通过计算两篇文档有多少个相同的词来评估他们的相似度
实现类:org.apdplat.word.analysis.SimpleTextSimilarity
用法如下: - String text1 = "我爱学习";
- String text2 = "我爱读书";
- String text3 = "他是黑客";
- TextSimilarity textSimilarity = new SimpleTextSimilarity();
- double score1pk1 = textSimilarity.similarScore(text1, text1);
- double score1pk2 = textSimilarity.similarScore(text1, text2);
- double score1pk3 = textSimilarity.similarScore(text1, text3);
- double score2pk2 = textSimilarity.similarScore(text2, text2);
- double score2pk3 = textSimilarity.similarScore(text2, text3);
- double score3pk3 = textSimilarity.similarScore(text3, text3);
- System.out.println(text1+" 和 "+text1+" 的相似度分值:"+score1pk1);
- System.out.println(text1+" 和 "+text2+" 的相似度分值:"+score1pk2);
- System.out.println(text1+" 和 "+text3+" 的相似度分值:"+score1pk3);
- System.out.println(text2+" 和 "+text2+" 的相似度分值:"+score2pk2);
- System.out.println(text2+" 和 "+text3+" 的相似度分值:"+score2pk3);
- System.out.println(text3+" 和 "+text3+" 的相似度分值:"+score3pk3);
复制代码运行结果如下: - 我爱学习 和 我爱学习 的相似度分值:1.0
- 我爱学习 和 我爱读书 的相似度分值:0.5
- 我爱学习 和 他是黑客 的相似度分值:0.0
- 我爱读书 和 我爱读书 的相似度分值:1.0
- 我爱读书 和 他是黑客 的相似度分值:0.0
- 他是黑客 和 他是黑客 的相似度分值:1.0
复制代码来自:http://my.oschina.net/apdplat/blog/417047 |