Algorithme - python ahocorasick lit le texte d'un fichier local et effectue une correspondance de mots clés, mais la correspondance échoue
迷茫
迷茫 2017-05-18 10:47:50
0
1
1075
  • Utilisez Python+pyahocorasick pour faire correspondre des mots-clés, qui contiennent environ 10 à 20 caractères chinois.

  • Le texte utilisé pour construire ahocorasick est lu à partir du fichier local key_word. Le format est le suivant :

Espace Mère et Bébé<Aliments complémentaires<Nouilles/nouilles : nourrissons, tout-petits, bébés, enfants, bébés Nouilles, nouilles fines, nouilles épaisses, nouilles faites à la main, nouilles aux légumes, nouilles nutritives, nouilles cassées, nouilles séchées, nouilles
  • Le résultat correspondant est vide.

  • Le code est le suivant :

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) # 打印为空值

Si quelqu'un a rencontré ce problème, aidez-moi, fournissez un exemple de code ou proposez des solutions, merci !

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
仅有的幸福
  • Après deux jours de recherche, j'ai moi-même implémenté cette fonction

  • Le fichier local contient trop de mots-clés répétés et la correspondance n'est pas à 100 %, pour référence

  • Le code de référence est le suivant :

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])
  • Résultats d'impression : Section Mère et bébé<Aliments complémentaires<Nouilles/Nouilles

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal