敏感詞過濾的經典演算法DFA ,做了評估實驗
先上代碼
[python] view plain copy #!/usr/bin/python2.6 # -*- coding: utf-8 -*- import time class Node(object): def __init__(self): self.children = None # The encode of word is UTF-8 def add_word(root,word): node = root for i in range(len(word)): if node.children == None: node.children = {} node.children[word[i]] = Node() elif word[i] not in node.children: node.children[word[i]] = Node() node = node.children[word[i]] def init(path): root = Node() fp = open(path,'r') for line in fp: line = line[0:-1] #print len(line) #print line #print type(line) add_word(root,line) fp.close() return root # The encode of word is UTF-8 # The encode of message is UTF-8 def is_contain(message, root): for i in range(len(message)): p = root j = i while (j<len(message) and p.children!=None and message[j] in p.children): p = p.children[message[j]] j = j + 1 if p.children==None: #print '---word---',message[i:j] return True return False