2012-02-06 66 views
-1

我應該在Java中使用哪種數據結構來存儲其句子中每個單詞的詞頻以及它在另一個句子中的頻率,即成對。每個節點必須有兩個自己的頻率和一個相鄰的句子。對於文檔中的每一對句子都必須重複這一點。它用它稍後找出標準餘弦相似度。在Java中使用的數據結構

+2

作業嗎? – Nishant 2012-02-06 10:18:16

+0

「鄰居句子」是什麼意思?這是否意味着左邊和右邊的一句話?或者它意味着比現在的其他任何陳述? – Apurv 2012-02-06 10:40:33

+0

它意味着比現在的每一個其他的陳述! – user1080383 2012-02-06 10:59:37

回答

1

這是怎樣的一個鏈表:

public class SentenceOccurencies { 
    // Key is the word, Value the count 
    public Map<String, Integer> occurrencies = new HashMap<String Integer>(); 
    public SentenceOccurrencies neighbour; 
} 

隨意添加訪問器/增變等。

0

倒排索引是信息檢索技術的最佳存儲。所以你有一個從單詞到地圖的地圖,以及多少次。

因此,對於兩句話:

敏捷的棕色狐狸跳過了懶狗。 當狐狸跳起來時,懶狗睡了。

變爲:

brown -> {1:1} 
dog -> {1:1, 2:1} 
fox -> {1:1, 2:1} 
jumped -> {1:1, 2:1} 
lazy -> {1:1, 2:1} 
over -> {1:1} 
quick -> {1:1} 
slept -> {2:1} 
the -> {1:2, 2:2} 
while -> {2:1} 

然後你可以隨便去通過地圖和提取所需的信息。這種結構的好處在於,您可以高效地存儲多於兩個句子!

+0

謝謝!請你詳細說明代碼或數據結構。而且,在這之後,我如何找到這兩句話的標準餘弦相似? – user1080383 2012-02-06 11:02:27

+2

我真的認爲你應該嘗試自己實現這一點,否則你什麼都不會學。我已經給了你足夠的信息來開始 - 如果你發現你已經做了什麼。 – Robert 2012-02-06 11:06:56