我需要測量兩個配置文件之間的相似度,其中我們將用文字描述它們。現在使用配置文件數據,我需要找到它們之間的相似性。你能幫我一個建議嗎?有沒有一種方法根據配置文件數據匹配兩個配置文件
-1
A
回答
0
您可以對此問題進行文獻審查,將問題分解爲子問題,或根據您如何查看問題應用現有解決方案。例如,如果您將此問題視爲文本聚類的應用程序,則可以應用現有句子相似性度量。
關鍵字匹配似乎是最簡單的解決方案。此基準只需要您識別命名實體並計算匹配。你可以在這個過程中做一些術語加權。
解決方案的複雜性取決於文本的結構(更像LinkedIn檔案或簡歷?)和錯誤肯定的可能性(名稱和出生日期總是存在,它們足以建立相似性?)。你沒有提供給我們看的例子。
0
在OpenNLP中並沒有真正的實用工具。我建議你先採取一種簡單的方法,並從那裏開展工作。我建議的簡單方法是對每個配置文件描述進行矢量化,然後使用標準相似性度量來比較它們。這是一個使用餘弦相似度的例子。下一個你可能會遇到的問題是試圖將它們全部相互比較......然後你將進入你需要進行聚類的領域。您還應該考慮噪音消除和停用詞,並可能會產生更好的令牌。這個例子只是一個例子,你要做的最重要的決定是向你的向量添加什麼。
import java.util.HashSet;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
/**
*
* Crudely compares two strings
*/
public class SimpleProfileComparer {
public static void main(String[] args) {
String[] profileA = "bob likes to ride bikes and hiking".split(" ");
String[] profileB = "jim likes bikes and also enjoys hiking".split(" ");;
SortedMap<String, Double> a = new TreeMap<>();
for (String string : profileA) {
a.put(string, 1d);
}
SortedMap<String, Double> b = new TreeMap<>();
for (String string : profileB) {
b.put(string, 1d);
}
Set<String>keys = new HashSet<>();
keys.addAll(a.keySet());
keys.addAll(b.keySet());
for (String string : keys) {
if(!a.containsKey(string)){
a.put(string, 0d);
}
if(!b.containsKey(string)){
b.put(string, 0d);
}
}
Double compare = compare(a, b);
System.out.println(compare);
}
public static Double compare(SortedMap<String, Double> a, SortedMap<String, Double> b) {
//both vectors must be of the same schema (normed prior to this call)
if (a.keySet().size() != b.keySet().size()) {
throw new IllegalArgumentException("vectors must be the same length");
}
double magA = 0;
double magB = 0;
double dotProd = 0;
for (String key : a.keySet()) {
Double intA = a.get(key);
Double intB = b.get(key);
/*
* sum of squares calcs
*/
magA += intA * intA;
magB += intB * intB;
/**
* dot prod calc
*/
dotProd += intA * intB;
}
magA = Math.sqrt(magA);
magB = Math.sqrt(magB);
Double similarity = dotProd/(magA * magB);
return similarity;
}
}
相關問題
- 1. 沒有找到匹配配置文件
- 2. 在兩個文件中匹配數據
- 3. 重置所有配置配置文件
- 4. 有沒有辦法將Xcode自動配置文件選擇器配置爲某個團隊配置文件?
- 5. 根據其他配置文件無法啓用彈簧配置文件
- 6. 配置單元沒有匹配路徑文件和文件的文件存在
- 7. 在多個CSV匹配的數據有效的方法,文件
- 8. Apple Watch - 沒有找到匹配的Provisionin配置文件
- 9. Xcode 5 - 沒有找到匹配的配置文件
- 10. Watchkit擴展 - 沒有找到匹配的配置文件
- 11. 驗證失敗,「沒有找到匹配的配置文件...」
- 12. UVM-一個配置文件vs各種配置文件(每個測試的配置文件)
- 13. 根據deploymentName添加配置文件
- 14. 有效簽名標識匹配此配置文件無法在
- 15. 根據活動配置文件無法讀取屬性文件
- 16. 有沒有像在nexus2 nexus.xml一個nexus3一個配置文件?
- 17. 根據兩個文件之間的匹配創建一個新文件
- 18. 多彈簧配置文件(每個配置文件一個)
- 19. 有效供應配置文件未找到,但有匹配
- 20. Joomla有沒有公開用戶配置文件的方法?
- 21. ASP.NET配置文件 - 向現有用戶添加配置文件
- 22. 根據子串匹配刪除文件
- 23. 任何指定配置文件數據位置的方法
- 24. 在兩個用戶配置文件之間匹配%邏輯
- 25. 外部配置文件始終沒有加載數據
- 26. 處理表前綴沒有任何數據庫配置文件
- 27. 配置單元數據庫文件沒有分隔符
- 28. Sitecore體驗配置文件中沒有數據
- 29. Django的URL配置 - 匹配文件名
- 30. 配置文件的多屬性匹配