聊天机器人的实现

BOT的认识:

  • QA   BOT:
    • 问答机器人,有明确的目标,能够准确地返回结果
    • 通过信息检索的方法完成
  • TASK BOT:
    • 任务机器人,通过机器人去完成具体的事情
    • 语音转文本
    • 意图识别、文本分类
    • 槽位填充,
  • CHAT BOT:
    • 闲聊机器人,没有明确的目标

第一步 分词

str.strip([chars]);

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符

string.ascii_lowercase输出时小写字母a到z
word.lower()将其变成小写字母
import jieba
import config
import fasttext
import string
import jieba.posseg as psg
import stopwords
# jieba.load_userdict(config.user_dict_path)
#准备英文字符
letters=string.ascii_lowercase
def cut_sentence_by_word(sentence):
    '''
    实现中英文分词只是实现的单个词的分词
    :param sentence:
    :return:
    '''
    result=[]
    temp=""
    for word in sentence:
        if word.lower() in letters:#是英文字符就加入temp
            temp+=word.lower()
        else:#不是就判断temp空不空
            if temp!="":
                result.append(temp)
                temp=""
            result.append(word.strip())
    if temp!='':
        result.append(temp.lower())
    return result

def cut(sentence,by_word=False,use_stopwords=False,with_sg=False):
    '''
    :param sentence: str 句子
    :param by_word: 是否按照单个字分词
    :param use_stopwords:是否使用停用词
    :param with_sg:是否返回词性
    :return:
    '''
    if by_word:
        result=cut_sentence_by_word(sentence)

    else:
        result=psg.lcut(sentence)#实现词性分词
        result = [(i.word, i.flag) for i in result]
        if not with_sg:
            result = [i[0] for i in result]  # 是否带词性当with_sg是false是不带词性的
    if use_stopwords:#是否用停用词
        result=[i for i in result if i not in stopwords.stopwords]
    return result
    # print(string.ascii_lowercase)#a到z的小写字母


第二步、文本分类:

  •  对文本进行embedding的操作,转换为向量
  • 之后在通过多层的神经网络进行线性和非线性的变化的结果
  • 变换后的结果和目标值进行计算得到损失函数,比如:对数似然损失
  • 通过最小化损失函数,去更新原来模型的参数
  • CNN卷积神经网络
    RNN循环神经网络
    DNN深度神经网络
  • fasttext是什么:

    • 用来获取向量,进行文本分类的模块

    • 分类的效率得到词向量的效率高

没有语料集写不下去了,等换个项目写 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李小于

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值