Heim  >  Fragen und Antworten  >  Hauptteil

Algorithmus – Python ahocorasick liest Text aus einer lokalen Datei und führt einen Schlüsselwortabgleich durch, aber der Abgleich schlägt fehl

Mutter- und Babybereich<Ergänzungsnahrung<Nudeln/Nudeln: Säuglinge, Kleinkinder, Babys, Kinder, Babys Nudeln, dünne Nudeln, dicke Nudeln, handgemachte Nudeln, Gemüsenudeln, nahrhafte Nudeln, gebrochene Nudeln, getrocknete Nudeln, Nudeln
import ahocorasick

A = ahocorasick.Automaton()

title = 'Hello Kitty3色蔬菜细面300克 婴儿幼儿营养面条宝宝辅食面条'

with open('key_word', 'r') as f:
    for line in f.readlines():
        line = line.strip()
        line = str(line.split('<'))
   
        A.add_word(line, line)

A.make_automaton()

aa = A.iter(title)
for item in aa:
    print(item) # 打印为空值

Wenn sich jemand mit diesem Problem befasst hat, helfen Sie mir bitte, stellen Sie Beispielcode bereit oder bieten Sie Lösungen an. Vielen Dank!

迷茫迷茫2711 Tage vor1037

Antworte allen(1)Ich werde antworten

  • 仅有的幸福

    仅有的幸福2017-05-18 10:49:50

    • 研究了两天,自己实现了这个功能

    • 本地文件有太多重复关键字,匹配并不是100%,供参考

    • 参考代码如下:

    import ahocorasick
    
    A = ahocorasick.Automaton()
    
    titles = ['Hello Kitty3色蔬菜细面300克 婴儿幼儿营养面条宝宝辅食面条']
    
    word_dict = {}
    
    with open('categories.csv', 'r') as f:
        for line in f.readlines():
            line = line.strip()
            word_key = line.split(':')[0]
            word_value = list(line.split(':')[1].split('|'))
            word_dict[word_key] = word_value
            line = (line.split(':')[1].split('|'))
            for word in line:
                if word == "":
                    continue
                A.add_word(word, word)
    
    A.make_automaton()
    
    for title in titles:
        category = []
        aa = A.iter(title)
        ret = []
        matches = {}
    
        for (k,v) in aa:
            matches[v] = 1
    
        for (k,v) in matches.items():
            ret.append(k)
    
        for value in word_dict.items():
            if ret[0] in value[1]:
                category.append(value[0]) #关键字太多,所以写死了一个keyword匹配的结果
                #print(ret[0], value[0], value[1]) 
        print(category[0])
    • 打印结果:母婴专区<辅食<面仔/面条

    Antwort
    0
  • StornierenAntwort