NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词

image.png

分词的概念

简单来说就是把词进行分开,分词的难点: 1.如何避免歧义,如:“白开水不如果汁甜”。如何让机器避免将“如果”分到一起。 2.如何识别未登录词,并判断词性(人物,地点) 解决歧义的方法有很多,使用n_gram模型或者概率统计在解决歧义的作用下很好实现,如下面要介绍的HMM和CRF.

 

分词方法分类

  • 基于词典的分词算法 基于词典的分词算法又称为机械分词算法,它是按照一定的策略将待分析的汉字串与一个“充分大的机器词典”中的词条进行匹配 , 若在词典中找到某个字符串, 则匹配成功,认为这个字串是词并将之切分出来。基于词典的分词算法有三个要素,分词词典、扫描方向(正向、逆向)和匹配原则(最大匹配,最小匹配等)[2]。 正向最大匹配算法。假设词典里词条的最大长度是Maxlen,则每次从文本最左边截取一个字符串,其长度为Maxlen,把该字串在词典中进行匹配,如果匹配成功,则将这个词从句子中切分出来;若匹配不成功,则将这个字串的最后一个字去掉,再将新得到的字串在词典中匹配。循环这个过程,直到切分出所有的词。
  • 基于统计的分词算法和基于理解的分词算法 基于统计的分词算法主要思想是,词是稳定的字的组合,两个字在文本中连续出现的次数越多,就越有可能组合成一个词。因此这类算法通过对大量文本的统计,根据字串在文本中出现的统计频率来决定其是否构成一个词。其主要的统计模型有:互信息、N元文法模型、神经网络模型和隐马尔科夫模型(HMM)等。

下面就介绍一下最大随机场和隐马可夫模型在中文分词中的应用

CRF

  • 原理 用一句话来解释就是“有序列的分类”。 就是在原来分类的基础上考虑到了时序,开始(B),中间(B),结尾(E),以及单字构成的词(S) CRF分词的过程就是对词位标注后,将B和E之间的字,以及S单字构成分词 CRF学习的过程: 就是描述一些特征配置:当前词语是xx,上个词xx,满足这种配置的,特征函数输出就是1,不然是0。每个词都有同样多的特征函数判断,所以是全局优化值。预测的过程就是利用每种特征配置给标签打分,然后打分结果加权求和,打分最高的标签,就是预测结果。 训练方法: 线性链的条件随机场跟线性链的隐马尔科夫模型一样,一般推断用的都是维特比算法。这个算法是一个最简单的动态规划。首先我们推断的目标是给定一个X,找到使P(Y|X)最大的那个Y嘛。然后这个Z(X),一个X就对应一个Z,所以X固定的话这个项是常量,优化跟他没关系(Y的取值不影响Z)。然后 exp也是单调递增的,也不带他,直接优化exp里面。所以最后优化目标就变成了里面那个线性和的形式,就是对每个位置的每个特征加权求和。比如说两个状态的话,它对应的概率就是从开始转移到第一个状态的概率加上从第一个转移到第二个状态的概率,这里概率是只exp里面的加权和。那么这种关系下就可以用维特比了。
  • 维特比原理 首先你算出第一个状态取每个标签的概率,然后你再计算到第二个状态取每个标签得概率的最大值,这个最大值是指从状态一哪个标签转移到这个标签的概率最大,值是多 少,并且记住这个转移(也就是上一个标签是啥)。然后你再计算第三个取哪个标签概率最大,取最大的话上一个标签应该是哪个。以此类推。整条链计算完之后, 你就知道最后一个词去哪个标签最可能,以及去这个标签的话上一个状态的标签是什么、取上一个标签的话上上个状态的标签是什么,酱。这里我说的概率都是 exp里面的加权和,因为两个概率相乘其实就对应着两个加权和相加,其他部分都没有变。
  • 与HMM区别 1)HMM是假定满足HMM独立假设。CRF没有,所以CRF能容纳更多上下文信息。 2)CRF计算的是全局最优解,不是局部最优值。 3)CRF是给定观察序列的条件下,计算整个标记序列的联合概率。而HMM是给定当前状态,计算下一个状态。 4)CRF比较依赖特征的选择和特征函数的格式,并且训练计算量大
  • 示例 这里用的是genius包 Genius是一个开源的python中文分词组件,采用 CRF(Conditional Random Field)条件随机场算法。
#encoding=utf-8
import genius
text = u"""昨天,我和施瓦布先生一起与部分企业家进行了交流,大家对中国经济当前、未来发展的态势、走势都十分关心。"""
seg_list = genius.seg_text(
    text,
    use_combine=True,
    use_pinyin_segment=True,
    use_tagging=True,
    use_break=True
)
print('\n'.join(['%s\t%s' % (word.text, word.tagging) for word in seg_list]))

['昨天', ',', '我', '和', '施瓦布', '先生', '一起', '与', '部分', '企业家', '进行', '了', '交流', ',', '大家', '对', '中国', '经济', '当前', '、', '未来', '发展', '的', '态势', '、', '走势', '都', '十分关心']

HMM分词

HMM是关于时序的概率模型,描述一个含有未知参数的马尔可夫链所生成的不 可观测的状态随机序列,再由各个状态生成观测随机序列的过程。HMM是一个 双重随机过程---具有一定状态的隐马尔可夫链和随机的观测序列. HMM由隐含状态S、可观测状态O、初始状态概率矩阵π、隐含状态转移概率矩 阵A、可观测值转移矩阵B(又称为混淆矩阵,Confusion Matrix); π和A决定了状态序列,B决定观测序列,因此HMM可以使用三元符号表示,称 为HMM的三元素:

image.png

具体的原理部分会专门用一章来介绍。 具体代码可以见:https://github.com/tostq/Easy_HMM

目录
相关文章
|
6月前
|
自然语言处理 PyTorch 算法框架/工具
自然语言生成任务中的5种采样方法介绍和Pytorch代码实现
在自然语言生成任务(NLG)中,采样方法是指从生成模型中获取文本输出的一种技术。本文将介绍常用的5中方法并用Pytorch进行实现。
265 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
1月前
|
机器学习/深度学习 自然语言处理 数据可视化
【NLP自然语言处理】文本张量表示方法
【NLP自然语言处理】文本张量表示方法
|
1月前
|
人工智能 自然语言处理 搜索推荐
【NLP自然语言处理】文本处理的基本方法
【NLP自然语言处理】文本处理的基本方法
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP-新闻文本分类】处理新闻文本分类所有开源解决方案汇总
汇总了多个用于新闻文本分类的开源解决方案,包括TextCNN、Bert、LSTM、CNN、Transformer以及多模型融合方法。
50 1
|
3月前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
64 1
|
3月前
|
机器学习/深度学习 数据采集 监控
【NLP-新闻文本分类】2特征工程
本文讨论了特征工程的重要性和处理流程,强调了特征工程在机器学习中的关键作用,并概述了特征工程的步骤,包括数据预处理、特征提取、特征处理、特征选择和特征监控。
30 1
|
3月前
|
数据采集 自然语言处理 数据挖掘
【NLP-新闻文本分类】1 数据分析和探索
文章提供了新闻文本分类数据集的分析,包括数据预览、类型检查、缺失值分析、分布情况,指出了类别不均衡和句子长度差异等问题,并提出了预处理建议。
46 1
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--6 提分方案
在讯飞英文学术论文分类挑战赛中的提分技巧和实现方法,包括数据增强、投票融合、伪标签等策略,以及加快模型训练的技巧,如混合精度训练和使用AdamW优化器等。
40 0
|
3月前
|
数据采集 机器学习/深度学习 存储
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案
在讯飞英文学术论文分类挑战赛中使用BERT模型进行文本分类的方法,包括数据预处理、模型微调技巧、长文本处理策略以及通过不同模型和数据增强技术提高准确率的过程。
39 0

热门文章

最新文章