用户登录
用户注册

分享至

文档相似度计算软件 如何计算两个文档的相似度

  • 作者: 昨夜风流今昭当爹
  • 来源: 51数据库
  • 2020-04-21

winmerge用这个软件

操作步骤为:

FC——文件比较命令

1.功能:比较文件的异同,并列出差异处。

2.类型:外部命令

3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]

4.使用说明:

(1)选用/A参数,为ASCII码比较模式;

(2)选用/B参数,为二进制比较模式;

(3)选用/C参数,将大小写字符看成是相同的字符。

(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。

如何计算两个文档的相似度

如何计算两个文档的相似度

winmerge用这个软件

操作步骤为:

FC——文件比较命令

1.功能:比较文件的异同,并列出差异处。

2.类型:外部命令

3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]

4.使用说明:

(1)选用/A参数,为ASCII码比较模式;

(2)选用/B参数,为二进制比较模式;

(3)选用/C参数,将大小写字符看成是相同的字符。

(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。

如何计算两个文档的相似度

搜索下载 beyond compare ,可以比较一些文本类文档的差异,尤其对于写程序代码,查看前后文件的改动,很方便。

如何计算两个文档的相似度

有一个网上工具,叫textsimilarity (后面加.net), 可以用百分比显示两个文本的相似度,你试试吧

如何计算多个文本的相似度java程序,利用向量

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

如何计算两份代码的相似度?

问题里既然说是代码了,那就可以看到源码了?(我默认)最简单的就是diff一下啦,对策可以改改代码风格,排版,变量命名,甚至插曲一些无用代码等等。这些只是看起来不同了。另外几位大神的答案,似乎忽略了程序运行时的状况呢,如果程序本身逻辑没变,只是文本和语法上做些处理(忽略lisp之类的奇葩),程序运行起来之后,比较调用堆栈的变化,这种方法很容易识破。你说运行起来比较难的话,那就忽略了测试人员的作用了,把程序/代码段/模块 当成黑盒,通过mock等方式,还是可以一部分一部分搞的。那改变调用层次,函数套函数?甚至某些地方变成宏?模块重构?诸如此类。这就不好识别了。模块都给重构了的话,姑且不算抄了,但是设计上一样的,人工code review,去了解它的设计,还是能识破。首先可以diff一下,然后看运行状态,如果是差别很大的,看设计,做code review,看文档,如果自己的代码特别多,而人家的代码又拿不到,可以在自己的代码里加些【水印】,比如搞些magic number,运行时去调试,就找这个magic number,有的话,基本就是盗的。计算的话,我觉得评级比较靠谱,列规则,挨个检测,根据规则中枪程度评级,完全量化的方法应该很难做到,但是规则+评级 可以糙快猛的构造出一个比较相似度的系统,工程思维哈,不断根据实践,去调整这个系统,让它更接近准确就可以啦~我说的都是土方法,期待学术大神给个系统答案。

转载请注明出处51数据库 » 文档相似度计算软件 如何计算两个文档的相似度

软件
前端设计
程序设计
Java相关