NLP之分词、词向量、预训练篇

时间:2019-06-14
本文章向大家介绍NLP之分词、词向量、预训练篇,主要包括NLP之分词、词向量、预训练篇使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

不同分词工具原理解析

对各种分词工具的介绍,具体参考:

http://www.cnblogs.com/en-heng/p/6234006.html

1) jieba

具体参考

https://blog.csdn.net/rav009/article/details/12196623

jieba分词原理解析

采用的是Unigram + HMM,Unigram假设每个词相互独立

具体参考:

http://www.cnblogs.com/en-heng/p/6234006.html

先总结一下jieba的分词方法

先加载词典(包括自定义词典和自带的词典)生成字典树,对于待分词的句子先通过查字典树,对于那些在字典中出现了的词以此为基础构成一个DAG(有向无环图),具体是通过python中的字典表示的,字典的key是可能成词的词的词首在句子中的脚标,value是一个list,list中的每个值代表以key为词首所有可能组成的词的词尾在句子中的脚标。对于这些路径通过动态规划把求解概率最大问题转换为图论中的求最大路径问题,图中边的权重是词的词频的log值。

对于那些没有出现在字典中的词,把他们重新组成片段利用HMM模型进行分词,注意最后的解码过程中jieba对维特比算法进行了约束。

对于用HMM进行分词具体参考:

http://www.cnblogs.com/en-heng/p/6164145.html

Jieba用的是BEMS四标签格式分别表示词的开始、结束、中间(begin、end、middle)及字符独立成词(single),标签越多或许会更准确,但是会使训练速度更慢。

对于HMM发现新词总共是3个概率值的问题,这是作者基于一个大型语料提前训练出来的,词的初始概率可能就是每个词的频率,那么转移概率和生成概率也是通过一个大型语料训练出来的(这是学习问题)语料包括:来源主要有两个,一个是网上能下载到的1998人民日报的切分语料还有一个msr的切分语料。另一个是我自己收集的一些txt小说,用ictclas把他们切分。

主题jieba在使用HMM模型进行分词时对维特比算法进行了如下修改

为了适配中文分词任务,Jieba对Viterbi算法做了如下的修改:状态转移时应满足PrevStatus条件,即状态B的前一状态只能是E或者S,...最后一个状态只能是E或者S,表示词的结尾。

1) Foolnltk

1. 自定义词典的加载

import fool
fool.load_userdict('dict/aa.txt')

注意:aa.txt必须是GBK编码的,其次每个词要有一个大于1的权重值:

它是基于字特征+BI-LSTM+CRF进行分词的

3)哈工大的ltp

以微博为训练语料

以结构化感知器(Structured Perceptron, SP)方法来进行分词,它也是用于处理序列标注问题。

LTP用户词典:官方补充说“LTP的分词模块并非采用词典匹配的策略,外部词典以特征方式(转换为特征:是词典词汇的开头、是词典词汇的中间部分、是词典词汇的结尾)加入机器学习算法,并不能保证所有的词都是按照词典里的方式进行切分”。

结构化感知器与CRF以及感知器的区别

具体参考:

https://www.zhihu.com/question/51872633

结构化感知器和crf的最大差别在哪里?感觉crf的模版也可以用到结构化感知器上面

Perceptron(感知器)和CRF主要的区别是优化目标不同,CRF优化对数似然函数,是一个概率模型,因此需要计算partition function(配分函数),计算代价较高。而Perceptron优化正确答案与预测结果得分之间的差异(SP以最大熵准则建模score函数,分词结果则等同于最大score函数所对应的标注序列,具体没懂。),scoring function是线性函数。CRF的势函数与Perceptron的scoring function都使用了线性函数,因此特征模板是一致的

首先,“全局学习”的概念主要针对的是结构化预测问题(structure prediction),比如序列标注或者句法分析。不同于简单的多元分类,在结构化预测问题中,通常需要一个较为复杂的解码过程才能够获得最终的结构化输出。结构化感知器与普通感知器在学习算法上是一致的,主要的区别在于特征抽取是否考虑全局的结构化输出。而特征抽取过程则进一步决定了模型能否进行全局的结构化学习以及预测。

4)中科院的nlpir

以微博为训练语料

因为NLPIR是基于字典的分词,所以若用户加载自定义词典将优先使用用户词典。

它的前身是ICTCLAS

采用的是Bigram的Word-Based Generative ModelBigram假设每个词出现的概率只和其前一个词有关。

Word-Based Generative Model是采用最大联合概率来对最佳分词方案建模。即为以词为基础的生成式模型,和jieba分词类似,jieba所使用的是Unigram+HMM而它使用的是Bigram+HMM。

5)清华的thulac

以人民日报为训练语料

ltp所采用的分词模型相同。

6)斯坦福的中文分词

它是以CRF模型为基础进行中文分词的

未完明天更新

原文地址:https://www.cnblogs.com/dyl222/p/11025378.html