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


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

布隆算法

什么情況下需要布隆過濾器?--避免高內存

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

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

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

常規思路

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM