java代碼相似性的計(jì)算 java相似度算法

請(qǐng)問(wèn)各位高手 計(jì)算兩句話的cosin相似度 用java代碼如何實(shí)現(xiàn)?

給你看看我的思路:把兩句話存在兩個(gè)String里,然后用一個(gè)int記String長(zhǎng)度,一個(gè)int記相同字的個(gè)數(shù),最后把兩個(gè)int一除就出來(lái)了。

創(chuàng)新互聯(lián)成立以來(lái)不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺(tái)運(yùn)營(yíng)、App定制開(kāi)發(fā)手機(jī)網(wǎng)站制作設(shè)計(jì)、微信網(wǎng)站制作、軟件開(kāi)發(fā)、西云機(jī)房等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。

當(dāng)然這個(gè)是最簡(jiǎn)單的,只能算相同長(zhǎng)度的兩句話。

如何計(jì)算多個(gè)文本的相似度java程序,利用向量

String text1 = "我愛(ài)學(xué)習(xí)";

String text2 = "我愛(ài)讀書";

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);

運(yùn)行結(jié)果如下:

我愛(ài)學(xué)習(xí) 和 我愛(ài)學(xué)習(xí) 的相似度分值:1.0

我愛(ài)學(xué)習(xí) 和 我愛(ài)讀書 的相似度分值:0.4

我愛(ài)學(xué)習(xí) 和 他是黑客 的相似度分值:0.0

我愛(ài)讀書 和 我愛(ài)讀書 的相似度分值:1.0

我愛(ài)讀書 和 他是黑客 的相似度分值:0.0

他是黑客 和 他是黑客 的相似度分值:1.0

方式二:簡(jiǎn)單共有詞,通過(guò)計(jì)算兩篇文檔有多少個(gè)相同的詞來(lái)評(píng)估他們的相似度

實(shí)現(xiàn)類:org.apdplat.word.analysis.SimpleTextSimilarity

用法如下:

String text1 = "我愛(ài)學(xué)習(xí)";

String text2 = "我愛(ài)讀書";

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);

運(yùn)行結(jié)果如下:

我愛(ài)學(xué)習(xí) 和 我愛(ài)學(xué)習(xí) 的相似度分值:1.0

我愛(ài)學(xué)習(xí) 和 我愛(ài)讀書 的相似度分值:0.5

我愛(ài)學(xué)習(xí) 和 他是黑客 的相似度分值:0.0

我愛(ài)讀書 和 我愛(ài)讀書 的相似度分值:1.0

我愛(ài)讀書 和 他是黑客 的相似度分值:0.0

他是黑客 和 他是黑客 的相似度分值:1.0

求大神指導(dǎo)如何用JAVA計(jì)算出一個(gè)List里的相似信息

這個(gè)相似是要求相似度是多少?建議去重寫TestMessage類的equals和hash方法。

package com;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.commons.lang.StringUtils;

class TestMessage{

private int messageId;

private String message;

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public int getMessageId() {

return messageId;

}

public void setMessageId(int messageId) {

this.messageId = messageId;

}

@Override

public int hashCode() {

if(null == this.message){

return super.hashCode();

}else{

return this.message.hashCode();

}

}

@Override

public boolean equals(Object obj) {

if(null == obj){

return false;

}else if(obj instanceof TestMessage){

TestMessage tempObj = (TestMessage)obj;

return StringUtils.equalsIgnoreCase(message, tempObj.getMessage());

}else{

return false;

}

}

}

public class Test {

public static void main(String[] args) {

ListTestMessage list1 = new ArrayListTestMessage();

TestMessage yq1 = new TestMessage();

yq1.setMessageId(11);

yq1.setMessage("this is a test message");

TestMessage yq2 = new TestMessage();

yq2.setMessageId(12);

yq2.setMessage("this is a test message");

TestMessage yq3 = new TestMessage();

yq3.setMessageId(13);

yq3.setMessage("hello world");

TestMessage yq4 = new TestMessage();

yq4.setMessageId(14);

yq4.setMessage("this is a test message");

list1.add(yq1);

list1.add(yq2);

list1.add(yq3);

list1.add(yq4);

MapTestMessage,ListTestMessage data = new HashMapTestMessage,ListTestMessage();

for(int i=0;ilist1.size();i++){

TestMessage key = list1.get(i);

if(!data.containsKey(key)){

data.put(key, new ArrayListTestMessage());

}else{

continue;

}

ListTestMessage temp = data.get(key);

for(int j=i+1;jlist1.size();j++){

TestMessage value = list1.get(j);

if(temp.contains(value)){

continue;

}else{

temp.add(value);

}

}

}

System.out.println("OK");

}

}

當(dāng)前文章:java代碼相似性的計(jì)算 java相似度算法
文章鏈接:http://muchs.cn/article28/dosppcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、小程序開(kāi)發(fā)品牌網(wǎng)站建設(shè)、做網(wǎng)站營(yíng)銷型網(wǎng)站建設(shè)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化