隐马尔可夫(hmm)/感知机/条件随机场(crf)----词性标注(代码片段)

mantch mantch     2023-04-19     731

关键词:

笔记转载于GitHub项目https://github.com/NLP-LOVE/Introduction-NLP

7. 词性标注

7.1 词性标注概述

  1. 什么是词性

    在语言学上,词性(Par-Of-Speech, Pos )指的是单词的语法分类,也称为词类。同一个类别的词语具有相似的语法性质,所有词性的集合称为词性标注集。不同的语料库采用了不同的词性标注集,一般都含有形容词、动词、名词等常见词性。下图就是HanLP输出的一个含有词性的结构化句子

    我/r 的/u 希望/n 是/v 希望/v 张晚霞/nr 的/u 背影/n 被/p 晚霞/n 映/v 红/a

    每个单词的后边跟的就是词性标签:

    词性标签 词性
    r 代词
    u 动词
    n 名词
    v 动词
    nr 人名
    p 介词
    a 形容词
  2. 词性的用处

    词性的作用是提供词语的抽象表示,词的数量是无穷的,但词性的数量是有限的。词性支撑着许多高级应用,当下游应用遇到 OOV 时,可以通过 OOV 的词性猜测用法,比如上面的句子“林晚霞”就识别为人名进行处理,而不会拆开。

    词性也可以直接用于抽取一些信息,比如抽取所有描述特定商品的形容词等。

  3. 词性标注

    词性标注指的是为句子中每个单词预测一个词性标签的任务。它有以下两个难点:

    • 汉语中一个单词多个词性的现象很常见,但在具体语境下一定是唯一词性。

    • OOV 是任何自然语言处理任务的难题。

  4. 词性标注模型

    统计方法为这两个难点提供了解决方案,那就是我们熟悉的序列标注模型。只需将中文分词中的汉字替换为词语,B,M,E,S 替换为“名词、动词、形容词等”,序列标注模型马上就可以用来做词性标注。

    词性标注既可以看作中文分词的后续任务,也可以与中文分词集成为同一个任务。其中就可以把分词语料库加上词性标签就可以了,这样同时进行多个任务的模型称为联合模型。由于综合考虑了多种监督信号,联合模型在几乎所有问题上都要优于独立模型。

    然而工业界就没有那么理想,同时具有分词和词性标注的语料库非常少,需要大量的人力进行标注。

7.2 词性标注语料库与标注集

同中文分词一样,语言学界在标注规范上存在分歧,导致目前还没有一个被广泛接受的汉语词性划分标准。无论是词性划分的颗粒度,还是词性标签都不统一。一方面,各研究机构各持己见、派系林立,标注了大量互不兼容的语料库。另一方面,部分语料库受到严格版权控制,成为内部材料,得不到充分共享利用。

本节选取其中一些授权宽松, 容易获得的语料库作为案例。

以下示例我们选取 PKU 标注的《人民日报》语料库的标注集。

7.3 基于隐马尔可夫模型的词性标注

之前我们就介绍过隐马尔可夫模型,详细见: 4.隐马尔可夫模型与序列标注

隐马尔可夫模型词性标注代码见(程序会自动下载 PKU 语料库): hmm_pos.py

https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch07/hmm_pos.py

运行代码后结果如下:

一阶隐马尔可夫模型:
r, u, n, v, v, v
他/r 的/u 希望/n 是/v 希望/v 上学/v
他/代词 的/助词 希望/名词 是/动词 希望/动词 上学/动词
李狗蛋/动词 的/动词 希望/动词 是/动词 希望/动词 上学/动词

二阶隐马尔可夫模型:
r, u, n, v, v, v
他/r 的/u 希望/n 是/v 希望/v 上学/v
他/代词 的/助词 希望/名词 是/动词 希望/动词 上学/动词
李狗蛋/动词 的/动词 希望/动词 是/动词 希望/动词 上学/动词

可见隐马尔可夫模型成功的辨别出“希望”的两种词性 n 和 v。但 OOV问题就出现了,无法把“李狗蛋”识别成人名,隐马尔可夫模型一步走错满盘皆输,其根本原因在于隐马尔可夫模型只能利用单词这一个状态特征,无法通过姓氏“李”来推测“李狗蛋”是人名。

7.4 基于感知机的词性标注

之前我们就介绍过感知机模型,详细见: 5.感知机分类与序列标注

按照中文分词时的经验,感知机能够利用丰富的上下文特征,是优于隐马尔可夫模型的选择,对于词性标注也是如此。

感知机模型词性标注代码见(程序会自动下载 PKU 语料库): perceptron_pos.py

https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch07/perceptron_pos.py

运行会有些慢,结果如下:

李狗蛋/nr 的/u 希望/n 是/v 希望/v 上学/v
李狗蛋/人名 的/助词 希望/名词 是/动词 希望/动词 上学/动词

这次的运行结果完全正确,感知机成功的识别出 OOV “李狗蛋”的词性。

7.5 基于条件随机场的词性标注

之前我们就介绍过条件随机场模型,详细见: 6.条件随机场与序列标注

条件随机场模型词性标注代码见(程序会自动下载 PKU 语料库): crf_pos.py

https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch07/crf_pos.py

运行时间会比较长,结果如下:

李狗蛋/nr 的/u 希望/n 是/v 希望/v 上学/v
李狗蛋/人名 的/助词 希望/名词 是/动词 希望/动词 上学/动词

依然可以成功识别 OOV “李狗蛋”的词性。

7.6 词性标注评测

将 PKU 语料库按 9:1 分隔为训练集和测试集,分别用以上三种模型来训练,准确率如下:

算法 准确率
一阶隐马尔可夫模型 44.99%
二阶隐马尔可夫模型 40.53%
结构化感知机 83.07%
条件随机场 82.12%

从上图可知,结构化感知机和条件随机场都要优于隐马尔可夫模型,判别式模型能够利用更多的特征来进行训练,从而提高更多的精度。

7.7 自定义词性

在工程上,许多用户希望将特定的一些词语打上自定义的标签,称为自定义词性。比如,电商领域的用户希望将一些手机品牌打上相应标签,以便后续分析。HanLP 提供了自定义词性功能。具体有两种实现。

  1. 朴素实现

    可以使用HanLP挂载的方式实现:

    from pyhanlp import *
    
    CustomDictionary.insert("苹果", "手机品牌 1")
    CustomDictionary.insert("iPhone X", "手机型号 1")
    analyzer = PerceptronLexicalAnalyzer()
    analyzer.enableCustomDictionaryForcing(True)
    print(analyzer.analyze("你们苹果iPhone X保修吗?"))
    print(analyzer.analyze("多吃苹果有益健康"))

    当然,此处以代码的方式插入自定义词语,在实际项目中也可以用词典文件的方式,运行效果如下:

    你们/r 苹果/手机品牌 iPhone X/手机型号 保修/v 吗/y ?/w
    多/ad 吃/v 苹果/手机品牌 有益健康/i

    从结果来看,词典只是机械的匹配,将“吃苹果”也当成了手机品牌,犯了所有规则系统的通病,看来词典同样解决不了词性标注,词性标注还是应当交给统计方法。

  2. 标注语料

    词性的确定需要根据上下文语境,这恰好是统计模型所擅长的。为了实现自定义词性,最佳实践是标注一份语料库,然后训练一个统计模型。

    至于语料库规模,与所有机器学习问题一样,数据越多,模型越准。

7.8 GitHub

HanLP何晗--《自然语言处理入门》笔记:

https://github.com/NLP-LOVE/Introduction-NLP

项目持续更新中......

目录


章节
第 1 章:新手上路
第 2 章:词典分词
第 3 章:二元语法与中文分词
第 4 章:隐马尔可夫模型与序列标注
第 5 章:感知机分类与序列标注
第 6 章:条件随机场与序列标注
第 7 章:词性标注
第 8 章:命名实体识别
第 9 章:信息抽取
第 10 章:文本聚类
第 11 章:文本分类
第 12 章:依存句法分析
第 13 章:深度学习与自然语言处理

crf条件随机场

CRF的进化https://flystarhe.github.io/2016/07/13/hmm-memm-crf/参考:http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/ 标记偏置问题:MEMM最大熵马尔可夫模型  路径1-1-1-1的概率:0.4*0.45*0.5=0 查看详情

如何用简单易懂的例子解释条件随机场模型?它和hmm有啥区别

...输入输出的联合分布P(X,Y)为基础建模,如朴素贝叶斯、隐马尔可夫模型;判别模型以条件概率分布P(Y|X)为基础建模,如最大熵模型、条件随机场等。这几个模型之间有一定的关系,它们的关系如下:其中,NB表示朴素贝叶斯,ME... 查看详情

hmmmemmcrf差别联系

...材料做了文字编辑,原创部分甚少。參考资料见最后。隐马尔可夫模型(HiddenMarkovModel。HMM),最大熵马尔可夫模型(MaximumEntropyMarkovModel,MEMM)以及条件随机场(ConditionalRandomField,CRF)是序列标注中最经常使用也是最主要的三... 查看详情

序列标注常用模型crfhmmmemm简介及比对

序列标注常用模型CRF、HMM、MEMM简介及比对隐马尔可夫模型(HiddenMarkovModel,HMM),最大熵马尔可夫模型(MaximumEntropyMarkovModel,MEMM)以及条件随机场(ConditionalRandomField,CRF)是序列标注中最常用也是最基本的三个模型。生成式模... 查看详情

ml-13-5条件随机场(crf-conditionalrandomfield)

目录知识串讲HMMVSMEMM从随机场到马尔科夫随机场条件随机场(CRF)MRF因子分解定理线性链条件随机场(Linear-CRF)一句话简介:条件随机场(ConditionalRandomFields,以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型... 查看详情

条件随机场

...量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。条件随机场可以用于不同的预测问题,本章主要讲述线性链(linearchain)条件随机场在标注问题的应用,这时问题变成了由输入序列对输出序列预测的判别... 查看详情

条件随机场摘要

...分布模型,在自然语言处理中得到了广泛应用。HMM引入了马尔科夫假设,即当前时刻的状态只与其前一时刻的状态有关,HMM是一种生成式概率图模型,条件随机场(CRF)与HMM不同,是一种判别式的概率图模型。CRF是在给定一组变... 查看详情

hmm及crf

...写成通用形式即如果联合概率分布满足成对、局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型或马尔可夫随机场(MRF)设无向图中的任意两个没有边连接的节点、,其他所有节点为,成对马尔可夫性指:给定的条件... 查看详情

条件随机场(crf)-1-简介(转载)

转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618222.html   首先我们先弄懂什么是“条件随机场”,然后再探索其详细内容。        于是,先介绍几个名词。马尔可夫链    & 查看详情

nlp——图模型条件随机场(conditionalrandomfield,crf)

...  本文简单整理了以下内容:   (一)马尔可夫随机场(Markovrandomfield,无向图模型)简单回顾   (二)条件随机场(Conditionalrandomfield,CRF)    这篇写的非常浅,基于[1]和[5]梳理。感... 查看详情

nlp学不会打我半小时学会基本操作12命名实例提取(代码片段)

...学会基本操作12⚠️命名实例提取概述命名实例HMM随机场马尔科夫随机场CRF命名实例实战数据集crf预处理主程序概述从今天开始我们将开启一段自然语言处理(NLP)的旅程.自然语言处理可以让来处理,理解,以及运用人类的语言,实现... 查看详情

隐马尔可夫(hmm)模型

隐马尔可夫(HMM)模型  隐马尔可夫模型,是一种概率图模型,一种著名的有向图模型,一种判别式模型。主要用于时许数据建模,在语音识别、自然语言处理等领域广泛应用。  概率图模型分为两类,一类:使用有向无环... 查看详情

hmm是啥意思?

意思?隐马尔可夫模型(HMM)是指隐马尔可夫模型,是一种用于描述参数未知的马尔可夫过程的统计模型。困难在于从可观察的参数中确定过程的隐藏参数。这些参数然后被用于进一步的分析,例如模式识别。隐马尔可夫模型最早... 查看详情

nlp入门使用crf++实现命名实体识别(ner)(代码片段)

...量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫(Markov)随机场。??较为简单的条件随机场是定义在线性链上的条件随机场,称为线性链条件随机场(linearchainconditionalrandomfield).线性链条件随机场可以用 查看详情

一文搞定hmm(隐马尔可夫)(代码片段)

HMM(隐马尔可夫)学习目标1.自动机2.马尔可夫链和马尔可夫假设3.隐马尔可夫模型3.1马尔科夫模型中的三个问题:3.2似然度问题:3.3解码问题4.案例4.1如何对句子进行分词4.2统计概率4.3使用viterbi算法进行解码学习... 查看详情

ml-13-1隐马尔科夫模型hmm

【ML-13-1】隐马尔科夫模型HMM【ML-13-2】隐马尔科夫模型HMM--前向后向算法【ML-13-3】隐马尔科夫模型HMM--Baum-Welch(鲍姆-韦尔奇)【ML-13-4】隐马尔科夫模型HMM--预测问题Viterbi(维特比)算法目录基础知识-马尔可夫链HMM... 查看详情

自然语言处理系列-4条件随机场(crf)及其tensorlofw实现

...章会相继介绍在NLP中应用比较多的一些机器学习模型,隐马尔科夫模型(HMM),条件随机场(CRF),朴素贝叶斯,支持向量机(SVM),EM算法等相继都会聊到,感兴趣的朋友可以订阅我的博客,或者关注我的微信公众号,会定期... 查看详情

条件随机场

概率无向图模型又称马尔可夫随机场(Markovrandomfield)或马尔可夫网络,是一个由无向图表示的联合概率分布。图是由结点和边组成,无向图中的边没有方向。概率无向图中结点表示随机变量,边表示结点之间的概率依赖关系。成... 查看详情