神经网络模型的训练过程,神经网络模型训练过程

本文探讨了如何利用深度学习技术训练聊天机器人语言模型,包括数据预处理、词向量训练、Seq2Seq模型的运用。深度学习与神经网络的区别、深度学习的基本思想以及浅层学习的局限性也进行了阐述,揭示了深度学习在训练数据较少时可能面临的挑战,并对比了神经网络与深度神经网络的差异。
摘要由CSDN通过智能技术生成

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

数据预处理模型能聊的内容也取决于选取的语料。如果已经具备了原始聊天数据,可以用SQL通过关键字查询一些对话,也就是从大库里选取出一个小库来训练。

从一些论文上,很多算法都是在数据预处理层面的,比如Mechanism-AwareNeuralMachineforDialogueResponseGeneration就介绍了,从大库中抽取小库,然后再进行融合,训练出有特色的对话来。

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

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

下面主要介绍两个内容:中文分词现在有很多中文分词的SDK,分词的算法也比较多,也有很多文章对不同SDK的性能做比较。做中文分词的示例代码如下。

#coding:utf8''' SegmenterwithChinese '''importjieba importlangiddefsegment_chinese_sentence(sentence):'''Returnsegmentedsentence.'''seg_list=(sentence,cut_all=False)seg_sentence=u"".join(seg_list)returnseg_sentence.strip().encode('utf8')defprocess_sentence(sentence):'''OnlyprocessChineseSentence.'''iflangid.classify(sentence)[0]=='zh':returnsegment_chinese_sentence(sentence)returnsentenceif__name__=="__main__":print(process_sentence('飞雪连天射白鹿'))print(process_sentence('Ihaveapen.'))以上使用了langid先判断语句是否是中文,然后使用jieba进行分词。

在功能上,jieba分词支持全切分模式,精确模式和搜索引擎模式。全切分:输出所有分词。精确:概率上的最佳分词。所有引擎模式:对精确切分后的长句再进行分词。

jieba分词的实现主要是分成下面三步:1、加载字典,在内存中建立字典空间。字典的构造是每行一个词,空格,词频,空格,词性。

上诉书3n上诉人3n上诉期3b上诉状4n上课650v建立字典空间的是使用python的dict,采用前缀数组的方式。

使用前缀数组的原因是树结构只有一层- word:freq,效率高,节省空间。

比如单词"dog",字典中将这样存储:{"d":0,"do":0,"dog":1#value为词频}字典空间的主要用途是对输入句子建立有向无环图,然后根据算法进行切分。

算法的取舍主要是根据模式 -全切,精确还是搜索。2、对输入的语句分词,首先是建立一个有向无环图。 有向无环图, Directedacyclicgraph (音/ˈdæɡ/)。

【图3-2】DAGDAG对于后面计算最大概率路径和使用HNN模型识别新词有直接关系。

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

然后用HMM模型和Viterbi算法识别新词。精确模型切词:使用动态规划对最大概率路径进行求解。

最大概率路径:求route=(w1,w2,w3,..,wn),使得Σweight(wi)最大。Wi为该词的词频。更多的细节还需要读一下jieba的源码。

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

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

【图3-3】wordembedding,Ref.#7wordembedding是文本的数值化表示方法。

表示法包括one-hot,bagofwords,N-gram,分布式表示,共现矩阵等。Word2vec近年来,word2vec被广泛采用。

Word2vec输入文章或者其他语料,输出语料中词汇建设的词向量空间。详细可参考word2vec数学原理解析。使用word2vec安装完成后,得到word2vec命令行工具。

word2vec-train""\-output"data/review.model"\-cbow1\-size100\-window8\-negative25\-hs0\-sample1e-4\-threads20\-binary1\-iter15-train""表示在指定的语料库上训练模型-cbow1表示用cbow模型,设成0表示用skip-gram模型-size100词向量的维度为100-window8训练窗口的大小为8即考虑一个单词的前八个和后八个单词-negative25-hs0是使用negativesample还是HS算法-sample1e-4采用阈值-threads20线程数-binary1输出model保存成2进制-iter15迭代次数在训练完成后,就得到一个model,用该model可以查询每个词的词向量,在词和词之间求距离,将不同词放在数学公式中计算输出相关性的词。

比如:vector("法国")-vector("巴黎)+vector("英国

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值