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

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

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

大该写了一下思虑,你看看把。

大致还算可以了。如果我把它写得再好,那就可以拿出去买钱了。

假如你编译后生成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码比较方式下,显示相异处的行号。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8182229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存