人工智能学习:聊天机器人实现

1.认识陪聊机器人项目

        陪聊机器人:人工智能典型应用之一。最早:1965年 ELIZA
分类:
■ 任务型聊天机器人
■ 闲聊型聊天机器人
方法:
■ 基于模板匹配的方法
■基于搜索的方法(如下图)


2. 中文分词及文本表示

jieba分词的三种模式
■精确模式:
result=jieba.cut('下雨天留客天留我不留',cut_all=False)
下雨天 留客 天留 我 不留
■全模式:
result= jieba.cut('下雨天留客天留我不留',cut_all=True)
下雨 下雨天 雨天 留客 天留 我 不留
■搜索引擎模式:
result=jieba.cut_for_search('下雨天留客天留我不留')
下雨 雨天 下雨天 留客 天留 我 不留

3.文本相似度计算

文本相似度:计算不同文本之间的距离
数学上的距离:欧式距离、 曼哈顿距离
文本距离:余弦相似度

4. 项目实现

准备工作:
获取语料库 -- 分词存储 -- 获取文本向量机相似度model
处理流程:
 接受输入 -- 加载和解析模板文件 -- 寻找最大相似度的回答

5.实验代码

import jieba
import json
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

# 分词并保存结果到文件
def segment_and_save(input_file, output_file):
    with open(input_file, 'r', encoding='utf-8') as f:
        content = f.read()
    words = list(jieba.cut(content))
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(' '.join(words))

# 训练Word2Vec模型
def train_word2vec(input_file):
    model = Word2Vec(LineSentence(input_file), size=100, window=5, min_count=1, workers=4)
    model.save("word2Vec.model")
    return model

# 加载模板文件
def load_templates(template_file):
    with open(template_file, 'r', encoding='utf-8') as f:
        templates = json.load(f)
    return templates

# 计算文本相似度
def calculate_similarity(text1, text2):
    words1 = set(jieba.cut(text1))
    words2 = set(jieba.cut(text2))
    common_words = words1.intersection(words2)
    return len(common_words) / (len(words1) * len(words2)) ** 0.5

# 聊天机器人模型输出
def chatbot(input_text, template_file):
    # 分词并保存结果到文件
    segment_and_save("corpus.txt", "fenci_result.txt")

    # 训练Word2Vec模型
    word2vec_model = train_word2vec("fenci_result.txt")

    # 加载模板文件
    templates = load_templates(template_file)

    # 计算输入文本和模板文件中的“title”的相似度
    max_similarity = -1
    best_template = None
    for template in templates:
        title_similarity = calculate_similarity(input_text, template["title"])
        if title_similarity > max_similarity:
            max_similarity = title_similarity
            best_template = template

    # 根据相似度输出结果
    if max_similarity > 0.5:
        print(best_template["reply"])
    else:
        print("无法回答")
        
while True:
    input_text = input("请输入文本(输入q退出):")
    if input_text == 'q':
        print("再见!")
        break
    template_file = "templet.txt"
    chatbot(input_text, template_file)

6.实验结果

7.实验总结

本实验采用了jieba分词库、gensim库训练模型,重点是要计算输入的文本与模板文件templet.txt中的相似度,与文件中“title”相似度高的会有输出,回答是文件中的“reply”,反之则无法回答。简单实现聊天机器人的功能。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值