Rumah > Soal Jawab > teks badan
Gunakan Python+pyahocorasick untuk memadankan kata kunci, iaitu kira-kira 10-20 aksara Cina.
Teks yang digunakan untuk membina ahocorasick dibaca daripada kata kunci fail setempat. Formatnya adalah seperti berikut:
Kawasan ibu dan bayi<Makanan pelengkap<Mi/mi: bayi, kanak-kanak, bayi, kanak-kanak, bayi | Mee, mee nipis, mee tebal, mee buatan tangan, mee sayur, mee berkhasiat, mee pecah, mee kering, mee |
Hasil padanan kosong.
Kod adalah seperti berikut:
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) # 打印为空值
Jika sesiapa telah menangani masalah ini, sila bantu saya, berikan contoh kod, atau berikan penyelesaian, terima kasih!
仅有的幸福2017-05-18 10:49:50
Selepas dua hari penyelidikan, saya melaksanakan fungsi ini sendiri
Fail tempatan mempunyai terlalu banyak kata kunci berulang dan padanan tidak 100%, untuk rujukan
Kod rujukan adalah seperti berikut:
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])
Hasil cetakan: Bahagian ibu dan bayi<Makanan pelengkap<Mee/Mee