java计算相似代码 代码相似度算法

请问各位高手 计算两句话的cosin相似度 用java代码如何实现?

给你看看我的思路:把两句话存在两个String里,然后用一个int记String长度,一个int记相同字的个数,最后把两个int一除就出来了。

专注于为中小企业提供成都做网站、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业泽州免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

当然这个是最简单的,只能算相同长度的两句话。

java 在console行输入一串String后回车,仍无法停止。 下面的程序是计算相似度的,当用户输入关键字后

1.代码如下:

import java.io.File;

import java.io.FileNotFoundException;

import java.util.HashSet;

import java.util.Scanner;

import java.util.Set;

public class Qurey {

public static void main(String[] args) throws FileNotFoundException {

System.out.println("please enter a file to read from: ");

Scanner in = new Scanner(System.in);

String filename = in.next();

SetString textkeywords = readWords(filename);

// in.close();

System.out

.println("please enter query keywords to seartch,1 to quit: ");

SetString keywords = new HashSetString();

Scanner input = new Scanner(System.in);

// correct here

String temp;

while (!(temp = input.next()).equals("1")) {

keywords.add(temp.toLowerCase());

}

int qIntersectD = 0;

for (String word : keywords) {

if (textkeywords.contains(word)) {

qIntersectD++;

}

}

double Similarity = 0;

Similarity = qIntersectD

/ (Math.sqrt(textkeywords.size()) * Math.sqrt(keywords.size()));

System.out.println("the similarity between query and document is : "

+ Similarity);

}

public static SetString readWords(String filename)

throws FileNotFoundException {

SetString words = new HashSetString();

Scanner in = new Scanner(new File(filename));

in.useDelimiter("[^a-zA-Z]+");

while (in.hasNext()) {

words.add(in.next().toLowerCase());

}

in.close();

return words;

}

}

2.运行结果:

java两组数组判断,进行模糊查询,如果检测到同一组相似那么就输出相似,求代码,谢谢,不用list

public class Main{ public static void main (String[] args){ int a[]={6,7}; int []b = new int[2]; int i=0; for(i=0;i2;i++){ b[i]=a[i]-1; System.out.println(b[i]); } }}望采纳谢谢,可以追问

有没有可以检查出两个java程序代码相似度的软件或者方法?如果有,除了改名字之外 ,添加空格或者改

有的,是基于编译后的字节码的检测,因此添加空格是不管用的,method顺序不清楚,大致原理跟下面这个论文里的差不多,但是具体的软件应该有所不同,需要知道具体是什么软件才好针对性的做修改以避免抄袭检测

在java中写个程序,输入10组数字,每组为0-3之间的6位数,算出相似位数最多的两组,并打印结果。

/*

* 在java中写个程序,输入10组数字,每组为0-3之间的6位数,算出相似位数最多的两组,并打印结果。

* 如:

“0” 110212

“1” 022011

“2” 231221

“3” 222121

“4” 203022

“5” 030111

“6” 220122

“7” 212232

“8” 122232

“9” 200123

打印 :7组 8组

结果是:2232

位数4位

代码如下所示:

*/

import java.util.Scanner;

public class Main3 {

public static void main(String args[]){

String [][]str=new String[10][2];

Scanner scanner=new Scanner(System.in);

for(int i=0;i10;i++){

//如果没有前面的“0”,“1”……的输入,我们手动添加即可,或者改为1维数组

str[i][0]=scanner.next();

//我们在这里要以String的格式读取数字,以便于后面的计算和处理

str[i][1]=scanner.nextLine();

str[i][1]=str[i][1].trim();

}

String temp[]=new String[2];

int count[]=new int[45];//0需要和2-9比,2需要和3-9比,以此类推,8比9,9不比,所以一共有45个比较结果

String best[]=new String[45];

String choice[]=new String[45];

int cn=0;

for(int i=0;i9;i++){

for(int j=i+1;j=9;j++){

for(int l=0;l6;l++){

if(str[i][1].charAt(l)==str[j][1].charAt(l)){

//如果两个数列中有相同的位数,那么这两个数组合的计数器加一

//并且将相同位数加入对应组合的字符串中

count[cn]++;

if(best[cn]!=null)

best[cn]+=String.valueOf(str[i][1].charAt(l));

else

best[cn]=String.valueOf(str[i][1].charAt(l));

}

}

choice[cn]=String.valueOf(i)+";"+String.valueOf(j);

cn++;

}

}

int max=count[0];

int max_n=-1;

for(int i=1;i45;i++)

//找到相同位数最多的那一位

if(max=count[i]){

//这里是相同数量取最后一组,满足楼主的要求

//若要相同数量取前一组,改为maxcount[i]即可

max=count[i];

max_n=i;

}

//System.out.println(max_n+"\t"+max+"\t"+best[max_n]);

int index=choice[max_n].indexOf(";");

System.out.println(choice[max_n].substring(0,index)+"组\t"+choice[max_n].substring(index+1)+"组");

System.out.println("结果是:\t"+best[max_n]);

System.out.println("位数"+count[max_n]+"位");

}

}

运行结果:

输入:

“0” 110212

“1” 022011

“2” 231221

“3” 222121

“4” 203022

“5” 030111

“6” 220122

“7” 212232

“8” 122232

“9” 200123

输出:

7组 8组

结果是: 2232

位数4位

完全满足楼主要求,并且有注释~

加不加分看楼主你的心情,不过帮忙点下“对我有帮助”呗~谢谢了


分享名称:java计算相似代码 代码相似度算法
文章分享:http://cdiso.cn/article/hipjsj.html

其他资讯