利用word分词来计算文本相似度
2016-06-15 00:00
411 查看
word分词提供了多种文本相似度计算方式:方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度实现类:org.apdplat.word.analysis.CosineTextSimilarity用法如下:?
运行结果如下:?
方式二:简单共有词,通过计算两篇文档共有的词的总字符数除以最长文档字符数来评估他们的相似度实现类:org.apdplat.word.analysis.SimpleTextSimilarity用法如下:?
运行结果如下:?
方式三:编辑距离,通过计算两个字串之间由一个转成另一个所需的最少编辑操作次数来评估他们的相似度实现类:org.apdplat.word.analysis.EditDistanceTextSimilarity用法如下:?
运行结果如下:?
方式四:SimHash + 汉明距离,先使用SimHash把不同长度的文本映射为等长文本,然后再计算等长文本的汉明距离实现类:org.apdplat.word.analysis.SimHashPlusHammingDistanceTextSimilarity用法如下:?
运行结果如下:?
方式五:Jaccard相似性系数,通过计算两个集合交集的大小除以并集的大小来评估他们的相似度实现类:org.apdplat.word.analysis.JaccardTextSimilarity用法如下:?
运行结果如下:?
方式六:欧几里得距离(Euclidean Distance),通过计算两点间的距离来评估他们的相似度实现类:org.apdplat.word.analysis.EuclideanDistanceTextSimilarity用法如下:?
运行结果如下:?
方式七:曼哈顿距离(Manhattan Distance),通过计算两个点在标准坐标系上的绝对轴距总和来评估他们的相似度实现类:org.apdplat.word.analysis.ManhattanDistanceTextSimilarity用法如下:?
运行结果如下:?
12345678910111213141516 | 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.67 我爱购物 和 他是黑客 的相似度分值: 0.0 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.0 他是黑客 和 他是黑客 的相似度分值: 1.0 |
12345678910111213141516 | 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.5 我爱购物 和 他是黑客 的相似度分值: 0.0 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.0 他是黑客 和 他是黑客 的相似度分值: 1.0 |
12345678910111213141516 | String text1 = "我爱购物" ; String text2 = "我爱读书" ; String text3 = "他是黑客" ; Similarity textSimilarity = new EditDistanceTextSimilarity(); 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.5 我爱购物 和 他是黑客 的相似度分值: 0.0 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.0 他是黑客 和 他是黑客 的相似度分值: 1.0 |
12345678910111213141516 | String text1 = "我爱购物" ; String text2 = "我爱读书" ; String text3 = "他是黑客" ; TextSimilarity textSimilarity = new SimHashPlusHammingDistanceTextSimilarity(); 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.95 我爱购物 和 他是黑客 的相似度分值: 0.83 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.86 他是黑客 和 他是黑客 的相似度分值: 1.0 |
12345678910111213141516 | String text1 = "我爱购物" ; String text2 = "我爱读书" ; String text3 = "他是黑客" ; TextSimilarity textSimilarity = new JaccardTextSimilarity(); 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.5 我爱购物 和 他是黑客 的相似度分值: 0.0 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.0 他是黑客 和 他是黑客 的相似度分值: 1.0 |
12345678910111213141516 | String text1 = "我爱购物" ; String text2 = "我爱读书" ; String text3 = "他是黑客" ; TextSimilarity textSimilarity = new EuclideanDistanceTextSimilarity(); 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.41 我爱购物 和 他是黑客 的相似度分值: 0.29 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.29 他是黑客 和 他是黑客 的相似度分值: 1.0 |
12345678910111213141516 | String text1 = "我爱购物" ; String text2 = "我爱读书" ; String text3 = "他是黑客" ; TextSimilarity textSimilarity = new ManhattanDistanceTextSimilarity(); 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); |
123456 | 我爱购物 和 我爱购物 的相似度分值: 1.0 我爱购物 和 我爱读书 的相似度分值: 0.33 我爱购物 和 他是黑客 的相似度分值: 0.14 我爱读书 和 我爱读书 的相似度分值: 1.0 我爱读书 和 他是黑客 的相似度分值: 0.14 他是黑客 和 他是黑客 的相似度分值: 1.0 |
转载:http://my.oschina.net/apdplat/blog/417047
相关文章推荐
- 什么是词干化处理
- 卷积神经网络在自然语言处理的应用
- word2vec实践(一):预备知识
- 词向量和语言模型
- Java内存泄露与溢出的区别
- [EN] TensorFlow Examples
- MapReduce:详解Shuffle过程
- 自然语言处理中的Attention Model:是什么及为什么
- myeclipse+maven实现多模块项目struts+spring+mybatis
- 短文本聚类方法
- 聚类算法-canopy
- 使用万能框架HttpHelper抓取安卓APP数据
- DBA应该掌握的SQL语句(三)
- 小白Windows7/10 64Bit安装Theano并实现GPU加速(没有MinGw等,详细步骤)
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- ubuntu系统下eclipse配置hadoop开发环境并运行wordcount程序
- 泰迪杯比赛总结--关于NLP的资源
- Theano学习笔记(三)——图结构
- bash下快速移动光标的快捷键
- Python if 和 for 的多种写法