Python匹配关键词黑名单词根?

文件A有2500万个正常关键词,一行一个(正常关键词,每个关键词字符较长)
文件B有5万个关键词,一行一个(黑名单词根,每个关键词字符较短),都是utf8编码
用Python来实现匹配的话,匹配规则:

条件1:不含B中的任何一个词根:
条件2:不含0-9数字
条件3:不含a-zA-Z字母
条件4:不含r'>|<|+|=|-|)|(|)|(|&|%|……|^|¥|&dollar;|#|@|】|【| |-|.|*|amp|nbsp|;|/|]|[|{|}|:|;|》|《|、|:|。' 这些特殊字符

文件A中符合以上四个条件的将该关键词保存在文件D。

已经解决:如果A中的某个关键词含有B中的任何一个词根,则将该关键词保存在文件C
用ac自动机

import ahocorasick
import time
def main():
    t1 = time.time()
    A = ahocorasick.Automaton()
    #向trie树中添加单词
    with open("blackword.txt",'r') as fp:
        for line in fp:
            bkw = line.strip()
            A.add_word(bkw,(1,bkw))
    #将trie树转化为Aho-Corasick自动机
    A.make_automaton()
    g1 = open("result_dangdang.txt", 'a+')
    for line in open("dangdang.txt"):
        for k,(i,t) in A.iter(line.strip()):
            print line.strip()+t
            g1.write(line.strip()+":"+t+"\n")
    g1.close()
    t2 = time.time()
    print "cost time is ", t2 - t1
main()
阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题