判斷文本中字符串是否在字典中 判斷一個元素是否存在一個集合中

判斷一段文本中是否包含一個字典中的某個詞

布隆算法算法

什麼狀況下須要布隆過濾器?--避免高內存

先來看幾個比較常見的例子數組

  • 字處理軟件中,須要檢查一個英語單詞是否拼寫正確
  • 在 FBI,一個嫌疑人的名字是否已經在嫌疑名單上
  • 在網絡爬蟲裏,一個網址是否被訪問過
  • yahoo, gmail等郵箱垃圾郵件過濾功能

這幾個例子有一個共同的特色: 如何判斷一個元素是否存在一個集合中?網絡

常規思路

  • 數組
  • 鏈表
  • 樹、平衡二叉樹、Trie
  • Map (紅黑樹)
  • 哈希表

對於低內存的字典,方法以下:spa

1 
import jieba 2 def check(s): 3 huangfan_path = 'path/to/dict.txt' 4 jieba.load_userdict(huangfan_path) 5 huangfan_words_dict = set() 6 with open(huangfan_path, 'rb') as fr: 7 for line in fr.readlines(): 8 huangfan_words_dict.add(line.strip().decode('utf-8')) 9 return set(jieba.lcut(s)) & self.huangfan_words_dict
相關文章
相關標籤/搜索