下载了一个wxpy包,主要提供微信鉴权接入、微信好友和群定位,微信消息处理等功能,结合之前基于gensim的聊天机器人处理部分,改写了一些,今天在群里也做了一下简单的测试,答案是能用,但机器人比较傻。权且一乐。
下面是wxpy包的介绍,详细见https://wxpy.readthedocs.io/zh/latest/index.html
wxpy: 用 Python 玩微信。
微信机器人 / 可能是最优雅的微信个人号 API
wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展
from wxpy import *
from collections import defaultdict
import pprint
from gensim import corpora
from gensim import similarities
from gensim import models
import jieba
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
class myQuestion(object):
def __init__(self,corpusfile):
# 初始化加载相关字典、模型、相似度矩阵
print('-------------------------myQuestion--------------------------')
self.dictionary = corpora.Dictionary.load('dictionary.dict')
self.tfidf = models.TfidfModel.load("dictionary.tfidf")
self.index = similarities.MatrixSimilarity.load('dictionary.index')
questionanswer=myCorpus(corpusfile)
self.questionanswerdict, self.questionlist=questionanswer.createcorpus()
def creatematchdocment(self,query_document):
# 匹配问题
query_document = jieba.lcut(query_document.strip())
query_bow = self.dictionary.doc2bow(query_document)
query_tfidf=self.tfidf[query_bow]
sims = self.index[query_tfidf]
# 排序
simstop = sorted(enumerate(sims), key=lambda x: x[1], reverse=True)
# 获取索引
rownumber=simstop[0][0]
# 获取问题
question= self.questionlist[rownumber]
# 获取答案
answer= self.questionanswerdict[question]
return answer
# for document_number, score in sorted(enumerate(sims), key=lambda x: x[1], reverse=True):
# print(document_number, score) #, self.questionseglist[document_number],self.questionlist[document_number])
if __name__ == "__main__":
filename = 'chatcorpus.txt'
myquestion = myQuestion(filename)
bot = Bot(cache_path=True)
print('不胜人生一场醉上线')
wxpy_groups = bot.groups().search('某某群')
myfriend= bot.friends().search('某某人')[0]
# 将老板的消息转发到文件传输助手
@bot.register(wxpy_groups)
def forward_boss_message(msg):
print('消息为:',msg.text)
ret = myquestion.creatematchdocment(msg.text)
return ret
@bot.register(myfriend)
def forward_boss_message(msg):
print('消息为:',msg.text)
ret = myquestion.creatematchdocment(msg.text)
return ret
# 堵塞线程
embed()
效果
本文分享自 python与大数据分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!