我正在嘗試實現文本文件的矢量化......我創建了一個字典(所有文檔中的唯一字)......這是在java中實現此目的的最佳方式?文本文件的矢量化
例如 - 我的詞典有以下單詞 - {w1,w2,w3,w4} 而且我有兩個文檔,每個文檔都有單詞在詞彙表中的子集。我需要寫一個文本文件的矩陣形式 -
1,3,4,0
0,0,2,1
這裏每一行代表一個文檔和值表示文檔中的每個詞的出現。
你能建議我在Java中實現這個最有效的方法嗎?
我正在嘗試實現文本文件的矢量化......我創建了一個字典(所有文檔中的唯一字)......這是在java中實現此目的的最佳方式?文本文件的矢量化
例如 - 我的詞典有以下單詞 - {w1,w2,w3,w4} 而且我有兩個文檔,每個文檔都有單詞在詞彙表中的子集。我需要寫一個文本文件的矩陣形式 -
1,3,4,0
0,0,2,1
這裏每一行代表一個文檔和值表示文檔中的每個詞的出現。
你能建議我在Java中實現這個最有效的方法嗎?
嘗試使用HashMap將每個單詞映射到矢量中該單詞的位置。然後可以通過爲矢量創建一個int []來構造每一行,遍歷所有單詞,查找映射中每個單詞的位置並增加相應的項目。
HashMap<String, Integer> dict = new ... // Map word to position
for (String[] doc: docs) {
int vector[VECTOR_SIZE] = new ....
for (String word: doc) {
vector[dict.get(word)]++;
}
// Print vector
}
爲什麼使用一個單獨的數組而不是隻保留地圖中的計數?與索引有一個映射只是多餘的,而不是有一個映射到計數。 – jzworkman 2012-03-21 17:50:20
當然,讓我們看看你到目前爲止,雖然? – Sid 2012-03-21 17:28:56
我已經將字典單詞存儲在文本文件中...並且我將文本字符串作爲參數傳遞給函數.... public void createVector(String text)throws IOException {String [] x = tweet.split( 「」); \t \t爲(列W:X){ \t \t \t而(((V = reader.readLine())= NULL)!){...}}}'我有點困惑,怎麼算文本字符串中字典中每個單詞出現的次數。 – Fox 2012-03-21 17:34:35
你可以維護一個字典,其中的關鍵是單詞,值是一個計數,每次遇到這個單詞時,增加計數。 – Sid 2012-03-21 17:36:44