前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于自然语言处理系列-基于gensim的微信聊天机器人

关于自然语言处理系列-基于gensim的微信聊天机器人

作者头像
python与大数据分析
发布2022-03-11 14:44:50
2400
发布2022-03-11 14:44:50
举报
文章被收录于专栏:python与大数据分析

下载了一个wxpy包,主要提供微信鉴权接入、微信好友和群定位,微信消息处理等功能,结合之前基于gensim的聊天机器人处理部分,改写了一些,今天在群里也做了一下简单的测试,答案是能用,但机器人比较傻。权且一乐。

下面是wxpy包的介绍,详细见https://wxpy.readthedocs.io/zh/latest/index.html

wxpy: 用 Python 玩微信。

微信机器人 / 可能是最优雅的微信个人号 API

wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展

代码示例

代码语言:javascript
复制
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()

效果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档