暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

追梦IT人 2020-03-26
1025

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

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


wxpy: 用 Python 玩微信。

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

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


代码示例

  1. from wxpy import *

  2. from collections import defaultdict

  3. import pprint

  4. from gensim import corpora

  5. from gensim import similarities

  6. from gensim import models

  7. import jieba

  8. import logging

  9. logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)


  10. class myQuestion(object):

  11. def __init__(self,corpusfile):

  12. # 初始化加载相关字典、模型、相似度矩阵

  13. print('-------------------------myQuestion--------------------------')

  14. self.dictionary = corpora.Dictionary.load('dictionary.dict')

  15. self.tfidf = models.TfidfModel.load("dictionary.tfidf")

  16. self.index = similarities.MatrixSimilarity.load('dictionary.index')

  17. questionanswer=myCorpus(corpusfile)

  18. self.questionanswerdict, self.questionlist=questionanswer.createcorpus()


  19. def creatematchdocment(self,query_document):

  20. # 匹配问题

  21. query_document = jieba.lcut(query_document.strip())

  22. query_bow = self.dictionary.doc2bow(query_document)

  23. query_tfidf=self.tfidf[query_bow]

  24. sims = self.index[query_tfidf]

  25. # 排序

  26. simstop = sorted(enumerate(sims), key=lambda x: x[1], reverse=True)

  27. # 获取索引

  28. rownumber=simstop[0][0]

  29. # 获取问题

  30. question= self.questionlist[rownumber]

  31. # 获取答案

  32. answer= self.questionanswerdict[question]

  33. return answer

  34. # for document_number, score in sorted(enumerate(sims), key=lambda x: x[1], reverse=True):

  35. # print(document_number, score) #, self.questionseglist[document_number],self.questionlist[document_number])


  36. if __name__ == "__main__":

  37. filename = 'chatcorpus.txt'

  38. myquestion = myQuestion(filename)

  39. bot = Bot(cache_path=True)

  40. print('不胜人生一场醉上线')

  41. wxpy_groups = bot.groups().search('某某群')

  42. myfriend= bot.friends().search('某某人')[0]

  43. # 将老板的消息转发到文件传输助手

  44. @bot.register(wxpy_groups)

  45. def forward_boss_message(msg):

  46. print('消息为:',msg.text)

  47. ret = myquestion.creatematchdocment(msg.text)

  48. return ret


  49. @bot.register(myfriend)

  50. def forward_boss_message(msg):

  51. print('消息为:',msg.text)

  52. ret = myquestion.creatematchdocment(msg.text)

  53. return ret

  54. # 堵塞线程

  55. embed()


效果



长按二维码关注“追梦IT人”


最后修改时间:2020-03-27 09:02:24
文章转载自追梦IT人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论