前段时间夸夸群火热,试着用几种不同方式写一个夸夸机器人。
项目地址https://github.com/xiaopangxia/kuakua_robot。
语料
做聊天机器人需要训练语料,事实上笔者本想潜伏在一些夸夸群里收集,后拉发现这些夸夸群日渐不活跃了,语料的质量也比较差,于是还是去爬了豆瓣表扬小组的数据,收集的语料地址https://github.com/xiaopangxia/kuakua_corpus。
基于文本相似度
相似度用的是传统离散词袋,采用TF-IDF、LSI、LDA模型等,搜索top4相似话题的回复,从中随机返回表扬语句,效果还不错,能够有一定针对性地夸人。
import random
from zhcnSegment import zhcnSeg
from sentenceSimilarity import SentenceSimilarity
class kuakuaChat():
def __init__(self):
"""
初始化夸夸话题回复表
"""
self.qa_dict = {}
self.q_list = []
with open('./douban_kuakua_topic.txt', 'r', encoding='utf8') as in_file:
for line in in_file.readlines():
que = line.split('<######>')[0].strip()
ans_list = []
for ans in line.split('<######>')[-1].split('<$$$$$$>'):
if len(ans) > 2:
ans_list.append(ans)
if len(que)>5: