簡體   English   中英

從散列中排除單詞的最有效方法

[英]Most efficient way to exclude words from hashing

我正在做一個小項目,該項目實際上將在多個文本文件中搜索用戶指定的單詞。 我計划通過在搜索之前將每個文件哈希到一個大型哈希表中,然后對用戶選擇的單詞進行哈希處理並將其與哈希表進行比較來實現此目的。

我的問題是,我想從哈希中排除某些常見的詞,例如“ the”。 我想到的兩種方法如下:

  1. 創建一個正則表達式,其本質上是“ \\ bword1 \\ b | \\ bword2 \\ b |” 依此類推,然后執行String.split(regex,"")從文本中刪除這些單詞,然后再開始進行哈希處理

  2. 當我處理每個單詞時,請執行String.matches(regex)來檢查該單詞是否屬於我排除單詞的正則表達式。 如果是這樣,只需跳到下一個單詞。

我覺得這兩個解決方案非常相似,並且想知道是否有更有效的方法可以做到這一點。

我建議維護一個HashSet停用詞(這是信息檢索領域的正式術語)。 您只需檢查stopwords.contains(word)

讓我也提出一種用於快速搜索文檔中單詞的技術: 倒排索引 不要為每個文件維護哈希圖; 維護單個哈希圖,其中鍵是單詞,值是包含單詞的文檔ID的集合。

然后,如果您要搜索包含兩個給定單詞的所有文檔,則只需獲取兩個集合並計算它們的交集即可滿足該請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM