2012-03-21 45 views
-2

我正在嘗試實現文本文件的矢量化......我創建了一個字典(所有文檔中的唯一字)......這是在java中實現此目的的最佳方式?文本文件的矢量化

例如 - 我的詞典有以下單詞 - {w1,w2,w3,w4} 而且我有兩個文檔,每個文檔都有單詞在詞彙表中的子集。我需要寫一個文本文件的矩陣形式 -

1,3,4,0 
0,0,2,1 

這裏每一行代表一個文檔和值表示文檔中的每個詞的出現。

你能建議我在Java中實現這個最有效的方法嗎?

+0

當然,讓我們看看你到目前爲止,雖然? – Sid 2012-03-21 17:28:56

+0

我已經將字典單詞存儲在文本文件中...並且我將文本字符串作爲參數傳遞給函數.... 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

+0

你可以維護一個字典,其中的關鍵是單詞,值是一個計數,每次遇到這個單詞時,增加計數。 – Sid 2012-03-21 17:36:44

回答

2
  1. 閱讀文本文件中的一個字在同一時間
  2. 檢查這個詞已經在字典中,如果是增加了計數,
  3. 循環遍歷字典輸出計數到輸出文件。

因爲功課標籤的我給你的步驟,並沒有任何實際的代碼(你可以找到如何做到這一切有一個快速谷歌搜索,如果你不知道如何)

+0

謝謝你的幫助 – Fox 2012-03-21 17:36:53

+0

基本上你的字典是用設置的,每次你找到那個單詞都會增加。 – jzworkman 2012-03-21 17:39:23

1

嘗試使用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 
} 
+0

爲什麼使用一個單獨的數組而不是隻保留地圖中的計數?與索引有一個映射只是多餘的,而不是有一個映射到計數。 – jzworkman 2012-03-21 17:50:20