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
大该写了一下思虑,你看看把。大致还算可以了。如果我把它写得再好,那就可以拿出去买钱了。
假如你编译后生成a.out 这个可执行文件。
运行时候: a.out 1.c 2.c
如果显示结果不超过20%, 那么可以认为两者不是抄袭的,如果结果显示大于50%,那么两者相似的程度就很伏滚大了,可以认为是抄袭的。
#include<stdio.h>
#include<fcntl.h>渣祥
#include<stdlib.h>
int main(int argc,char* argv[]){
int i,j
int fd1 ,fd2
int file1_len ,file2_len,sumbase1,sumbase2,sumbase = 0
int yes = 0
char filec
char file1_buf[9000] = {0}
char file2_buf[9000] = {0}
if( (fd1 = open(argv[1],O_RDONLY)) <0 ){
printf("file %s open error!\n",argv[1])
exit(-1)
}
if( (fd2 = open(argv[2],O_RDONLY)) <0 ){
printf("file %s open error!\n",argv[2])
exit(-1)
}
file1_len = lseek(fd1,0,SEEK_END)
lseek(fd1,0,SEEK_SET)
file2_len = lseek(fd2,0,SEEK_END)
lseek(fd2,0,SEEK_SET)
if( read(fd1,file1_buf,file1_len) <0 ){
printf("read error!\n")
exit(-1)
}
if( read(fd2,file2_buf,file2_len) <0 ){
printf("read error!\n")
exit(-1)
}
//去掉符缺梁余号
for( i = 0,j = 0 i <file1_len i++){
if( file1_buf[i] >= '0' &&file1_buf[i] <= '9' || file1_buf[i] >= 'A' &&file1_buf[i] <= 'z')
file1_buf[j++] = file1_buf[i]
}
sumbase1 = j
for( i = 0,j = 0 i <file2_len i++){
if( file2_buf[i] >= '0' &&file2_buf[i] <= '9' || file2_buf[i] >= 'A' &&file2_buf[i] <= 'z')
file2_buf[j++] = file2_buf[i]
}
sumbase2 = j
sumbase = sumbase1 <= sumbase2 ? sumbase1 : sumbase2
for( i = 0 ,j = 0i <sumbase i++,j++){
if( file1_buf[i] == file2_buf[j] ){
yes++
}else if(file1_buf[i] == file2_buf[j+3] &&file1_buf[i+1] == file2_buf[j+4]){
j +=3
}else if(file1_buf[i] == file2_buf[j+4] &&file1_buf[i+1] == file2_buf[j+5]){
j +=4
}else if(file1_buf[i] == file2_buf[j+5] &&file1_buf[i+1] == file2_buf[j+6]){
j +=5
}else if(file1_buf[i] == file2_buf[j+6] &&file1_buf[i+1] == file2_buf[j+7]){
j += 6
}else if(file1_buf[i] == file2_buf[j+8] &&file1_buf[i+1] == file2_buf[j+9]){
j += 8
}else if(file1_buf[i] == file2_buf[j+10] &&file1_buf[i+1] == file2_buf[j+11]){
j += 10
}else if(file1_buf[i] == file2_buf[j+11] &&file1_buf[i+1] == file2_buf[j+12]){
j +=11
}else if(file1_buf[i] == file2_buf[j+12] &&file1_buf[i+1] == file2_buf[j+13]){
j +=12
}else if(file1_buf[i] == file2_buf[j+20] &&file1_buf[i+1] == file2_buf[j+21]){
j +=20
}else if(file1_buf[i] == file2_buf[i+21] &&file1_buf[i+1] == file2_buf[i+22]){
j +=21
}else if(file1_buf[i] == file2_buf[j+25] &&file1_buf[i+1] == file2_buf[j+26]){
j +=25
}else if(file1_buf[i] == file2_buf[i+26] &&file1_buf[i+1] == file2_buf[i+27]){
j +=26
}
}
printf("相似的比例大约是:%0.3f%% \n",((yes * 1.0 / sumbase)*100))
return 0
}
如何计算两个文档的相似度winmerge用这个软件 *** 作步骤为:FC——文件比较命令1.功能:比较文件的异同,并列出差异处。2.类型:外部侍好命令3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路腔谈肆径名][文件名][/A][/B][/C][/N]4.使用说明:(1)选用/A参数,为ASCII码比较模式;(伍轿2)选用/B参数,为二进制比较模式;(3)选用/C参数,将大小写字符看成是相同的字符。(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)