bag of words 图像 bag of words
发布日期:2020-09-15摘要:matlab怎么组件bag of words 题目没写错吗?A-D都不对啊?我猜原题是“In the bag he found a piece of paper on which some speci...
matlab怎么组件bag of words
题目没写错吗?A-D都不对啊?我猜原题是“In the bag he found a piece of paper on which some special words were written”之类的吧,答案是B,是由“write some special words on a piece of paper”转换而来的……因为不能把句子里的“on”去掉,所以A是错的……
如何利用深度学习技术训练聊天机器人语言模型
数据预处理 模型能聊的内容也取决于选取的语料。
如果已经具备了原始聊天数据,可以用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。
Seq2Seq2014年,Sequence to Sequence Learning with Neural Networks提出了使用深度学习技术,基于RNN和LSTM网络训练翻译系统,取得了突破,这一方法便应用在更广泛的领域,比如问答系统,图像字幕,语音识别,撰写诗词等。
Seq2Seq完成了【encoder + decoder -...
...they,books,old,the,bag,filled,many2.wrote,on,cardboard,the,words,a,...
1 They filled the old bag with many books.2 Teacher wrote the words on a piece of the cardboard.3.Danny can guess what will happen to you.4.We should put,thermos on the right side,5.Some children put the jar into the water16.C 17D 18E 19 A 20 G好久不做了,有点慢,有些单词输入错了,我帮你改过了
-
给我们打电话
7*24小时服务热线:1399999999
全国客服热线:400-0000-000 -
百度地图
福建省三明市 -
给我们发邮件
E-mail:[email protected]
在线沟通