Maison > Questions et réponses > le corps du texte
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 !
仅有的幸福2017-05-18 10:49:50
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