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 Model,Bigram假设每个词出现的概率只和其前一个词有关。

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

5)清华的thulac

以人民日报为训练语料

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

6)斯坦福的中文分词

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

未完明天更新

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

时间: 2024-10-22 12:39:25

NLP之分词、词向量、预训练篇的相关文章

使用github--stanfordnlp--glove训练自己的数据词向量

1.准备语料 准备好自己的语料,保存为txt,每行一个句子或一段话,注意要分好词.将分好词的语料保存为×××.txt 2.准备源码 下载地址:https://github.com/stanfordnlp/GloVe,解压后将语料×××.txt添加到GloVe-master文件夹下 3.修改训练语料地址 打开demo.sh文件,由于默认是下载TXT8作为语料,故将这段代码删除,并修改CORPUS=×××.txt,最终文件内容如下: 其他应该都可以自行修改. 4.执行 打开终端,进入GloVe-ma

词向量(WordVector)

Reference:http://licstar.net/archives/328 (比较综合的词向量研究现状分析) 起源:One-hot Representation.PCA 序:为什么NLP在模式识别里面比较难? Licstar的文章开头这么提到:语言(词.句子.篇章等)属于人类认知过程中产生的高层认知抽象实体,而语音和图像属于较为底层的原始输入信号. 语音.图像数据表达不需要特殊的编码,而且有天生的顺序性和关联性,近似的数字会被认为是近似特征.然而语言就麻烦了. 比如通俗的One-hot

深度双向Transformer预训练【BERT第一作者分享】

目录 NLP中的预训练 语境表示 语境表示相关研究 存在的问题 BERT的解决方案 任务一:Masked LM 任务二:预测下一句 BERT 输入表示 模型结构--Transformer编码器 Transformer vs. LSTM 模型细节 在不同任务上进行微调 GLUE SQuAD 1.1 SQuAD 2.0 SWAG 分析 预训练的影响 方向与训练时间的影响 模型规模的影响 遮罩策略的影响 多语言BERT(机器翻译) 生成训练数据(机器阅读理解) 常见问题 结论 翻译自Jacob Dev

Deep Learning(深度学习)之(九)词向量的内部任务评价和外部任务评价方法

关键词: 内部任务评价(Intrinsic Evaluation)和 外部任务评价(extrinsic evaluations).超参数影响下的类比评价任务.人类决策和词向量距离的相关性.结合上下文处理歧义.窗口分类. 这个课堂笔记我们将会对词向量(也就是词嵌入)的内部任务评价和外部任务评价方法进行讨论.主要的内容是单词类比(word analogies)技术,我们会把它当做内部任务评价的技术并展示其相关示例,它会在词向量的调谐(tune)中发挥重要作用.我们还会讨论如何训练模型的权重/参数,并

基线系统需要受到更多关注:基于词向量的简单模型

最近阅读了<Baseline Needs More Love: On Simple Word-Embedding-Based Models and Associated Pooling Mechanisms>这篇论文[1],该工作来自杜克大学,发表在ACL 2018上.论文详细比较了直接在词向量上进行池化的简单模型和主流神经网络模型(例如CNN和RNN)在NLP多个任务上的效果.实验结果表明,在很多任务上简单的词向量模型和神经网络模型(CNN和LSTM)的效果相当,有些任务甚至简单模型更好.下

词向量的cbow模型

word2vec完整的解释可以参考<word2vec Parameter Learning Explained>这篇文章. cbow模型 cbow模型的全称为Continuous Bag-of-Word Model.该模型的作用是根据给定的词$w_{input}$,预测目标词出现的概率$w_t$,对应的数学表示为 $p(w_t|w_{input})$.如下图所示,Input layer表示给定的词,${h_1,...,h_N}$是这个给定词的词向量(又称输入词向量),Output layer是

词向量-LRWE模型

上一节,我们介绍利用文本和知识库融合训练词向量的方法,如何更好的融合这些结构化知识呢?使得训练得到的词向量更具有泛化能力,能有效识别同义词反义词,又能学习到上下文信息还有不同级别的语义信息. 基于上述目标,我们尝试基于CBOW模型,将知识库中抽取的知识融合共同训练,提出LRWE模型.模型的结构图如下: 下面详细介绍该模型的思想和求解方法. 1. LWE模型     在Word2vec的CBOW模型中,通过上下文的词预测目标词,目标是让目标词在其给定上下文出现的概率最大,所以词向量训练的结果是与其

文本分类实战(一)—— word2vec预训练词向量

1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 textCNN 模型 charCNN 模型 Bi-LSTM 模型 Bi-LSTM + Attention 模型 RCNN 模型 Adversarial LSTM 模型 Transformer 模型 ELMo 预训练模型 BERT 预训练模型 所有代码均在textClassifier仓库中, 觉得有帮助,

如何使用“预训练的词向量”,做文本分类

不多比比了,看代码!!! def train_W2V(w2vCorpus, size=100): w2vModel = Word2Vec(sentences=w2vCorpus, hs=0, negative=5, min_count=5, window=8, iter=1, size=size) w2vModel.save(inPath+'w2vModel.model') return w2vModel def load_W2V(W2V_path, loader_mySelf=1): if l