Java文本余弦相似度计算

Java文本余弦相似度计算

##参考源文:
我参考的是这里的解释,比较的通俗易懂。
链接: link
##简介:
但是,代码我没去看,自己根据自己的理解写的。我是一个初学者,完全靠基础知识拼凑,也知道Java有可以直接用的方法,但是积累太少,还局限于基础知识。
代码死板不完美,有待改进之处,望大佬指出,谢谢
##代码:

package day02;

import java.util.ArrayList;
public class test4 {

	public static void main(String[] args) {
		float s1=0,s2=0;  //定义变量存储计算结果
		//字符串定义
		 String str1 = "你好,你吃饭了吗";
		 String str2 = "我刚刚钓鱼了";
		 String str3 = getSingle(str1,str2);
		 
		 //定义集合
		 ArrayList list1 = new ArrayList();
		 ArrayList list2 = new ArrayList();
		 list1=getCount(str1,str3);
		 list2=getCount(str2,str3);
	//方法计算
	s1=(float) Math.sqrt(getlist(list1)*getlist(list2));	
	s2=getsum(list1,list2);
	
	//结果输出
		System.out.println("字符串1: "+str1);
		System.out.println("字符串2:  "+str2);
		System.out.println("余弦相似度为:  "+s2/s1);

	}


	//获取乘积之和
private static float getsum(ArrayList list1, ArrayList list2) {
		float sum=0;
		int L=list1.size();
		for (int i=0;i getCount(String str1, String str3) {
		ArrayList list = new ArrayList();
			int count=0;
		for(int i=0;i=0) {
				str1=str1.substring(str1.indexOf(s)+s.length());
				count++;
			}
		
			list.add(count);
			
		}
		return list;
	}
//合并字符串
	private static String getSingle(String str1, String str2) {
		StringBuffer newstr =new StringBuffer();
		for(int i=0;i list) {
		int s=0;
		for(Integer it1:list) {
			s=s+it1*it1;
		}
		return s;	
	}		
}

你可能感兴趣的:(文本余弦相似度,java)