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