HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    chatbots翻译(chatter翻译)

    发布时间:2023-03-12 12:42:43     稿源: 创意岭    阅读: 148        问大家

    大家好!今天让创意岭的小编来大家介绍下关于chatbots翻译的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    ChatGPT国内免费在线使用,能给你生成想要的原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    你只需要给出你的关键词,它就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端,官网:https://ai.de1919.com

    本文目录:

    chatbots翻译(chatter翻译)

    一、RNN基本应用

    与人类理解文字的道理差不多,看书都是一个字一个字,一句话一句话去理解的。语言本身作为一种符号并没有意义,只不过是人类对其赋予了意义。而这种意义体现在每个字(语义)以及字的顺序(语义关系)上。RNN相当于在通用神经网络上加入了人的 先验知识 ,将文本信息按照序列输入的方式处理。

    RNN对序列的基本思路是: 在序列任务中前面的数据会对当前的计算产生影响。 所以前一个cell的激活值会输入到后一个cell中。这样就其实就是对序列数据的特点做了一定程度的设计。

    但是随着序列长度变化,激活值不断堆叠后就会损失一些信息,导致序列前面的信息对后面的影响变弱。要知道很多时候语言的头部信息对后面的信息可能有很大的影响。所以目前应用较广泛的是LSTM模型,在RNN基础结构上增加了一条长记忆线C,每个cell的X与A会使得C对信息进行补充或者丢失,而具有序列重要信息的C会对A的激活值具有影响。就像是模型附带了一个小本本,遇到新鲜事儿就记进去,然后在后续判断将小本本的信息加入,产出更有可信度的激活值。

    在RNN应用过程中,逐渐发现有时候当前局部的计算不仅仅与前面的信息相关,也与后面的信息相关(特别是翻译、语音识别等)。所以提出了 双向RNN结构 ,将前面的信息与后面的信息综合起来做判断。

    人在进行信息判断时,有时候不仅仅是综合整个序列的信息,有时候更会抓住重点去分析以便快速得到更好的答案,在序列模型中每个输入本身确实有重点,比如吃与食物相关,在分析吃的字词时只需将注意力分配到与食物相关得词上,其他的并不重要,因此提出了 注意力模型

    如图所示,经过一个双向RNN处理过的输出值y,不同的y分配给不同的权重最终加和起来作为输入,那么该输入附带的信息就会有偏向,从而模型会有更好的效果。

    正如前文所说,所有的模型都不完美,在拟合过程中就会出现信息丢失、梯度消失等现象,长短时记忆、双向计算、注意力机制都是典型的将人类知识加入模型中,使得模型负担减少,效果更好。

    将语料库通过RNN模型训练后,模型就学会了人话的规律,从而可以在给定条件下判断下一个字是何字的概率,从而在多个场景有所应用:

    同样的方式可以应用在音乐上,如果将音乐也当做一种序列去训练,最终我们也可以获得某种音乐风格的曲子,从而可以实现在文字上以及在音乐上的另类创作。

    将RNN模型对接一个softmax输出,就可以对句子进行分类,通常用来判断情感趋向。

    除了可以通过分析句子得到情感判断外,分析词语也可以。目前词的使用都是将符号向量映射( Word2Vec 算法)到语义空间上,所以词向量本身就具有语义含义,通过训练可以做情感分类。

    翻译目前都是用如图所示结构,包含编码器与解码器。相当于将语句A通过RNN编码后灌入另一个模型去解码为另一个语句B,类似于卷积对图片的编码处理,序列模型在编码解码过程中也形成了一个表征语义的矩阵,该矩阵的语义表达与语言工具无关,作为两个语言之间的桥梁实现翻译功能。借鉴人类翻译过程中对前后文重点的读取,翻译模型会用到注意力机制以达到更好的模型效果

    实际上前一阵子出现过AI换脸这种生成式的任务在社区火爆,特别是色情网站。其实这种生成任务很多时候也会用到这种编码-解码样式的结构

    目前人机对话包含应用场景:问答型、聊天型、任务型。

    问答型 在很多客服领域应用广泛,解决了头部高频问题。这类任务更多属于机器学习,对用户的疑问通过关键字检测分类至我们预先设好的问题分类中。

    聊天型机器人 最典型的就是微软小冰,要保持这种开放性对话需要系统知识,不断产生新的话题。这类Chatbot的目标是实现《her》中的情感陪伴,但是就目前发展来讲,仍然不够。

    任务型机器人 目前看起来最具有商业潜力,市面上的智能音箱基本属于这类范畴。目标是识别用户意图后在封闭的话题区间内进行对话直至满足用户需求。

    在任务驱动型的人机对话中,首先就是获取人的意图。意图的识别属于自然语言理解,属于一种分类任务。很多智能音箱平台会推出一些技能,这些技能实际上就对应意图所对应的领域。通过意图识别后将业务处理逻辑落在这些技能上,技能与技能之间其实已经没有关联,这样的方式减轻了训练难度,使得机器人在特定任务上有更好的表现。

    在计算机处理人类请求后,不仅要判断用户的意图分类,还要对请求语进行序列标注(实体识别、实体关系抽取等),分析出该意图下哪些必要信息已经获得,哪些信息没有获得,这些就是填槽的过程。

    用户的请求往往是含糊不清的,多轮对话就是为了获取在该意图下所有的必要信息。整个过程需要对话管理的支持,对话管理实际一个决策过程(策略树),系统在对话过程中不断根据当前状态决定下一步应该采取的最优动作(如:提供结果,询问特定限制条件,澄清或确认需求…)从而最有效的辅助用户完成信息或服务获取的任务。对话管理的构建更需要人工设计,但似乎通过强化学习也能得到最佳路径。

    DM对话管理过程中可能需要和用户交互,就会用到自然语言生成,将系统语义转化为人类语言。这是个有限集,用模板是一种选择,同样也可以用语言模型、类似翻译的编码解码模型。

    二、如何利用深度学习技术训练聊天机器人语言模型

    数据预处理

    模型能聊的内容也取决于选取的语料。如果已经具备了原始聊天数据,可以用SQL通过关键字查询一些对话,也就是从大库里选取出一个小库来训练。从一些论文上,很多算法都是在数据预处理层面的,比如Mechanism-Aware Neural Machine for Dialogue Response Generation就介绍了,从大库中抽取小库,然后再进行融合,训练出有特色的对话来。

    对于英语,需要了解NLTK,NLTK提供了加载语料,语料标准化,语料分类,PoS词性标注,语意抽取等功能。

    另一个功能强大的工具库是CoreNLP,作为 Stanford开源出来的工具,特色是实体标注,语意抽取,支持多种语言。

    下面主要介绍两个内容:

    中文分词

    现在有很多中文分词的SDK,分词的算法也比较多,也有很多文章对不同SDK的性能做比较。做中文分词的示例代码如下。

    # coding:utf8

    '''  

    Segmenter with Chinese  

    '''

    import jieba  

    import langid

    def segment_chinese_sentence(sentence):

    '''

    Return segmented sentence.

    '''

    seg_list = jieba.cut(sentence, cut_all=False)

    seg_sentence = u" ".join(seg_list)

    return seg_sentence.strip().encode('utf8')

    def process_sentence(sentence):

    '''

    Only process Chinese Sentence.

    '''

    if langid.classify(sentence)[0] == 'zh':

    return segment_chinese_sentence(sentence)

    return sentence

    if __name__ == "__main__":

    print(process_sentence('飞雪连天射白鹿'))

    print(process_sentence('I have a pen.'))

    以上使用了langid先判断语句是否是中文,然后使用jieba进行分词。

    在功能上,jieba分词支持全切分模式,精确模式和搜索引擎模式。

    全切分:输出所有分词。

    精确:概率上的最佳分词。

    所有引擎模式:对精确切分后的长句再进行分词。

    jieba分词的实现

    主要是分成下面三步:

    1、加载字典,在内存中建立字典空间。

    字典的构造是每行一个词,空格,词频,空格,词性。

    上诉书 3 n

    上诉人 3 n

    上诉期 3 b

    上诉状 4 n

    上课 650 v

    建立字典空间的是使用python的dict,采用前缀数组的方式。

    使用前缀数组的原因是树结构只有一层 - word:freq,效率高,节省空间。比如单词"dog", 字典中将这样存储:

    {

    "d": 0,

    "do": 0,

    "dog": 1 # value为词频

    }

    字典空间的主要用途是对输入句子建立有向无环图,然后根据算法进行切分。算法的取舍主要是根据模式 - 全切,精确还是搜索。

    2、对输入的语句分词,首先是建立一个有向无环图。 

    有向无环图, Directed acyclic graph (音 /ˈdæɡ/)。

    【图 3-2】 DAG

    DAG对于后面计算最大概率路径和使用HNN模型识别新词有直接关系。

    3、按照模式,对有向无环图进行遍历,比如,在精确模式下,便利就是求最大权重和的路径,权重来自于在字典中定义的词频。对于没有出现在词典中的词,连续的单个字符也许会构成新词。然后用HMM模型和Viterbi算法识别新词。

    精确模型切词:使用动态规划对最大概率路径进行求解。

    最大概率路径:求route = (w1, w2, w3 ,.., wn),使得Σweight(wi)最大。Wi为该词的词频。

    更多的细节还需要读一下jieba的源码。

    自定义字典

    jieba分词默认的字典是:1998人民日报的切分语料还有一个msr的切分语料和一些txt小说。开发者可以自行添加字典,只要符合字典构建的格式就行。

    jieba分词同时提供接口添加词汇。

    Word embedding

    使用机器学习训练的语言模型,网络算法是使用数字进行计算,在输入进行编码,在输出进行解码。word embedding就是编解码的手段。

    【图 3-3】 word embedding, Ref. #7

    word embedding是文本的数值化表示方法。表示法包括one-hot,bag of words,N-gram,分布式表示,共现矩阵等。

    Word2vec

    近年来,word2vec被广泛采用。Word2vec输入文章或者其他语料,输出语料中词汇建设的词向量空间。详细可参考word2vec数学原理解析。

    使用word2vec

    安装完成后,得到word2vec命令行工具。

    word2vec -train "data/review.txt"

    -output "data/review.model"

    -cbow 1

    -size 100

    -window 8

    -negative 25

    -hs 0

    -sample 1e-4

    -threads 20

    -binary 1

    -iter 15

    -train "data/review.txt" 表示在指定的语料库上训练模型

    -cbow 1 表示用cbow模型,设成0表示用skip-gram模型

    -size 100 词向量的维度为100

    -window 8 训练窗口的大小为8 即考虑一个单词的前八个和后八个单词

    -negative 25 -hs 0 是使用negative sample还是HS算法

    -sample 1e-4 采用阈值

    -threads 20 线程数

    -binary 1 输出model保存成2进制

    -iter 15 迭代次数

    在训练完成后,就得到一个model,用该model可以查询每个词的词向量,在词和词之间求距离,将不同词放在数学公式中计算输出相关性的词。比如:

    vector("法国") - vector("巴黎) + vector("英国") = vector("伦敦")"  

    对于训练不同的语料库,可以单独的训练词向量模型,可以利用已经训练好的模型。

    其它训练词向量空间工具推荐:Glove。

    Seq2Seq

    2014年,Sequence to Sequence Learning with Neural Networks提出了使用深度学习技术,基于RNN和LSTM网络训练翻译系统,取得了突破,这一方法便应用在更广泛的领域,比如问答系统,图像字幕,语音识别,撰写诗词等。Seq2Seq完成了【encoder + decoder -> target】的映射,在上面的论文中,清晰的介绍了实现方式。

    【图 3-4】 Seq2Seq, Ref. #1

    也有很多文章解读它的原理。在使用Seq2Seq的过程中,虽然也研究了它的结构,但我还不认为能理解和解释它。下面谈两点感受:

    a. RNN保存了语言顺序的特点,这和CNN在处理带有形状的模型时如出一辙,就是数学模型的设计符合物理模型。

    【图 3-5】 RNN, Ref. #6

    b. LSTM Cell的复杂度对应了自然语言处理的复杂度。

    【图 3-6】 LSTM, Ref. #6

    理由是,有人将LSTM Cell尝试了多种其它方案传递状态,结果也很好。

    【图 3-7】 GRU, Ref. #6

    LSTM的一个替代方案:GRU。只要RNN的Cell足够复杂,它就能工作的很好。

    使用DeepQA2训练语言模型

    准备工作,下载项目:

    git clone https://github.com/Samurais/DeepQA2.git  

    cd DeepQA2  

    open README.md # 根据README.md安装依赖包

    DeepQA2将工作分成三个过程:

    数据预处理:从语料库到数据字典。

    训练模型:从数据字典到语言模型。

    提供服务:从语言模型到RESt API。

    预处理

    DeepQA2使用Cornell Movie Dialogs Corpus作为demo语料库。

    原始数据就是movie_lines.txt 和movie_conversations.txt。这两个文件的组织形式参考README.txt

    deepqa2/dataset/preprocesser.py是将这两个文件处理成数据字典的模块。

    train_max_length_enco就是问题的长度,train_max_length_deco就是答案的长度。在语料库中,大于该长度的部分会被截断。

    程序运行后,会生成dataset-cornell-20.pkl文件,它加载到python中是一个字典:

    word2id存储了{word: id},其中word是一个单词,id是int数字,代表这个单词的id。

    id2word存储了{id: word}。

    trainingSamples存储了问答的对话对。

    比如 [[[1,2,3],[4,5,6]], [[7,8,9], [10, 11, 12]]]

    1,2,3 ... 12 都是word id。

    [1,2,3] 和 [4,5,6] 构成一个问答。 [7,8,9] 和 [10, 11, 12] 构成一个问答。

    开始训练

    cp config.sample.ini config.ini # modify keys  

    python deepqa2/train.py  

    config.ini是配置文件, 根据config.sample.ini进行修改。训练的时间由epoch,learning rate, maxlength和对话对的数量而定。

    deepqa2/train.py大约100行,完成数据字典加载、初始化tensorflow的session,saver,writer、初始化神经元模型、根据epoch进行迭代,保存模型到磁盘。

    session是网络图,由placeholder, variable, cell, layer, output 组成。

    saver是保存model的,也可以用来恢复model。model就是实例化variable的session。

    writer是查看loss fn或者其他开发者感兴趣的数据的收集器。writer的结果会被saver保存,然后使用tensorboard查看。

    Model

    Model的构建要考虑输入,状态,softmax,输出。

    定义损耗函数,使用AdamOptimizer进行迭代。

    最后,参考一下训练的loop部分。

    每次训练,model会被存储在 save路径下,文件夹的命名根据机器的hostname,时间戳生成。

    提供服务

    在TensorFlow中,提供了标准的serving模块 - tensorflow serving。但研究了很久,还专门看了一遍 《C++ Essentials》,还没有将它搞定,社区也普遍抱怨tensorflow serving不好学,不好用。训练结束后,使用下面的脚本启动服务,DeepQA2的serve部分还是调用TensorFlow的python api。

    cd DeepQA2/save/deeplearning.cobra.vulcan.20170127.175256/deepqa2/serve  

    cp db.sample.sqlite3 db.sqlite3  

    python manage.py runserver 0.0.0.0:8000  

    测试

    POST /api/v1/question HTTP/1.1  

    Host: 127.0.0.1:8000  

    Content-Type: application/json  

    Authorization: Basic YWRtaW46cGFzc3dvcmQxMjM=  

    Cache-Control: no-cache

    {"message": "good to know"}

    response  

    {

    "rc": 0,

    "msg": "hello"

    }

    serve的核心代码在serve/api/chatbotmanager.py中。

    使用脚本

    scripts/start_training.sh 启动训练

    scripts/start_tensorboard.sh 启动Tensorboard

    scripts/start_serving.sh 启动服务

    对模型的评价

    目前代码具有很高的维护性,这也是从DeepQA项目进行重构的原因,更清晰的数据预处理、训练和服务。有新的变更可以添加到deepqa2/models中,然后在train.py和chatbotmanager.py变更一下。

    有待改进的地方

    a. 新建models/rnn2.py, 使用dropout。目前DeepQA中已经使用了Drop.

    b. tensorflow rc0.12.x中已经提供了seq2seq network,可以更新成tf版本.

    c. 融合训练,目前model只有一个库,应该是设计一个新的模型,支持一个大库和小库,不同权重进行,就如Mechanism-Aware Neural Machine for Dialogue Response Generation的介绍。

    d. 代码支持多机多GPU运行。

    e. 目前训练的结果都是QA对,对于一个问题,可以有多个答案。

    f. 目前没有一个方法进行accuracy测试,一个思路是在训练中就提供干扰项,因为当前只有正确的答案,如果提供错误的答案(而且越多越好),就可以使用recall_at_k方法进行测试。

    机器人家上了解到的,希望对你有用

    三、有哪些API接口可以用来做聊天机器人?

    1.海知智能:

    1. 海知智能第三方技能插件开放平台概述 · ruyi.ai开发者文档 · 看云docs.ruyi.ai

    不光能聊天,还可以在网站里内置技能,实现(翻译,成语接龙等)数十项功能

    2.天行机器人:

    白嫖用户绑定微信后有40000次永久额度,之后1元10000次

    3.思知机器人:

    AI机器人开放平台 - 思知(OwnThink)www.ownthink.com

    4.青云客智能机器人:

    青云客智能聊天机器人APIapi.qingyunke.com

    5.图灵机器人:

    图灵机器人-智能好用的聊天机器人www.turingapi.com

    图灵的官网如果不充值好像每日请求次数很低很低,但好在可以通过其他api网站进行调取

    6.小i机器人:

    模版展示页面nlp.xiaoi.com

    但小i机器人没有api使用文档,想要使用就只能自己分析

    import urllib.request

    import re

    message = “”

    msg = urllib.parse.quote(message)

    link=urllib.request.urlopen("http://nlp.xiaoi.com/robot/webrobot&callback=__webrobot_processMsg&data=%7B%22sessionId%22%3A%22ff725c236e5245a3ac825b2dd88a7501%22%2C%22robotId%22%3A%22webbot%22%2C%22userId%22%3A%227cd29df3450745fbbdcf1a462e6c58e6%22%2C%22body%22%3A%7B%22content%22%3A%22"+msg+"%22%7D%2C%22type%22%3A%22txt%22%7D")

    html_doc = link.read().decode()

    reply = re.findall(r'"content":"(.+?)\r\n"', html_doc)

    print(reply)

    可以通过这段python代码进行输入并取得输出

    四、如何和自动聊天机器人聊天?

    找到自动聊天机器人app,与它进行对话就好。

    可以与它智能对话,及时问答,百科信息,天气,生活小知识,聊天调侃。

    世界上最早的聊天机器人诞生于20世纪80年代,名为“阿尔贝特”,用BASIC语言编写而成。今天的互联网上,已出现“比利”、“艾丽斯”等聊天机器人等,中文的如“白丝魔理沙”、“乌贼娘”等由网友制作的聊天机器人。据悉,还有一个“约翰·列侬人工智能计划”,以再现当年“披头士”乐队主唱的风采为目标。

    人工智能(AI)和神经网络语言处理(NLP)技术得到了空前的发展,这意味着与机器人交谈越来越接近于与真人发生交谈。现如今,开发人员可以很容易地找到各种提供了AI和NLP服务的API,他们甚至不需要了解AI和NLP的工作原理。部分提供这类服务的网站如下:Crunchable.io、Chatbots.io、Luis.ai、API.ai和Wit.ai。

    以上就是关于chatbots翻译相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    chatGpT中文翻译(chatwith翻译中文)_2

    正版chatGPT(正版ChatGPT下载)

    chatGPT如何绕过字数限制

    对主播最暖心的经典语录(祝主播越来越好的句子的词)

    直播培训的好处(直播培训的好处和坏处)