当前位置:首页 » 操作系统 » 词性标注算法

词性标注算法

发布时间: 2023-04-16 05:51:53

Ⅰ NLP第八篇-词性标注

词性(part-of-speech)是词汇基本的语法属性,通常也称为词类。词性标注就是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程,是中文信息处理面临的重要基础性问题。

基于统计模型的词性标注方法

我们可以基于HMM去实现词性标注方法,实现基于HMM的词性标注方法中,模型的参数估计是其中的关键问题,也就是HMM的第三个问题,当时我们讲可以随机地初始化HMM的所有参数,但是,这将使词性标注问题姿卖启过于缺乏限制。

因此,通常利用词典信息约束模型的参数。假设输出符号表由单词构成(即词序列为HMM的观察序列),如果某个对应的‘词汇-词性标记’没有被包含在词典中,那该词汇被标记为该词性标记的概率就为0;如果存在,那该词汇被标记为某词汇标记的概率为其所有可能被标记的所有词性个数的倒数:

然后我们根据训练语料给定词性标记生成词的概率,我们思考一下,如何根据训练语料来合理的估计模型概率,对于某词性标记j生成词wl的概率,分子我们用词wl出现的次数乘以该词汇被标记为该词汇标记的概率,分母是在训练语料范围内,所有词被标记为该词汇标记的概率乘以该词出现的次数。某词性标记j生成词wl的概率,也即下式:

不仅考虑词出现次数的原因,个人理解,一是考虑到前面说过的,有些词是不能由特定词性标记输出的,所以其乘积为0,累加时就会被忽略;二是在估计模型参数时考虑到词本身所可能对应的词性标配祥记的个数,在计算特定词性标记的生成概率时,给予对应词性标记少的词汇一定的优待,给予其一定的概率倾斜。

另外,还有一种方法是采用将词汇划分成若干等价类的策略,以类为单位进行参数统计,进而避免了为每个单词单独调整参数,大大减少了参数的总个数。

一旦初始化完成后,就可以按照HMM的前向后向算法进行训练。

还有一点要注意的是,由于不同领域语料的概率有所差异,HMM的参数也应随着语料的变化而变化。

这就涉及到一个问题,在对原有的训练语料增加新的语料以后,模型的参数就需要重新调整了。而根据经典HMM的理论,也就是上篇讲的HMM,已经训练过的语料就难以再发挥作用了,所以这里希望当有新语料进来时,新旧语料能够同时发挥作用。

只需要对HMM的前向后向算法做一些微调即可,我们还记得,前向后向算法需要根据初始化好的模型去计算转移概率的期望值,再根据期望值去估计模型参数,也即π、aij、bj(k),最终收敛,我们得到了训练完毕的π、aij、bj(k),但是这里我们不只保存π、aij、bj(k),我们还要保存前一步的结果,也就是那些期望值,这样,当新的语料引入时,我们将原来模型中保存的期望值与新语料训练的期望值相加,即得到了反映新旧语料期望值变量的值,通过计算即可得到新的模型。这样也就解决了旧语料的利用问题。

基于规则的词性标注方法

基于规则的词性标注方法是人们提出较早的一种词性标注方法,其基本思想是按兼类词(拥有多种可能词性的词)搭配关系和上下文语境建造词类消歧规则,早期的规则一般由人编写。

然而随着语料库规模的逐步增大,以人工提取规则的方式显然是不现实的,于是人们提出了基于机器学习的规则自动提取方法。如下图所示:

基于规则的错误驱动的机器学习方法的基本思想是,首先运用初始状态标注器标识未标注的文本,由此产生已标注的文本。文本一旦被标注以后,迹如将其与正确的标注文本进行比较,学习器可以从错误中学到一些规则,从而形成一个排序的规则集,使其能够修正已标注的文本,使标注结果更接近于参考答案。

这样,在所有学习到的可能的规则中,搜索那些使已标注文本中的错误数减少最多的规则加入到规则集,并将该规则用于调整已标注的文本,然后对已标注的语料重新打分(统计错误数)。不断重复该过程,直到没有新的规则能够使已标注的语料错误数减少。最终的规则集就是学习到的规则结果。

这种方法的标注速度要快于人工,但仍然存在着学习时间过长的问题,改进方法是,在算法的每次迭代过程中,只调整受到影响的小部分规则,而不需要搜索所有的转换规则。因为每当一条获取的规则对训练语料实施标注后,语料中只有少数词性会发生改变,而只有在词性发生改变的地方,才影响与该位置相关的规则的得分。

统计方法与规则方法相结合的词性标注方法

有人提出了这样一种词性标注方法,其基本思想是,对汉语句子的初始词性标注结果,先经过规则排歧,排除汉语中那些最常见的、语言现象比较明显的歧义现象,然后再通过统计排歧,处理那些剩余的多类词并进行未登录词的词性推断,最后再进行人工校对,得到正确的标注结果。人工校对时可以发现系统中的问题,并进行改进。

但是上面这种方法存在一个很大的问题就是统计的可信度,我们不知道统计结果的可信度,总是需要人工校对所有的统计排歧结果,所以有人又提出了一种新的统计方法与规则方法相结合的词性标注方法。

新的方法通过计算词被标注为所有词性的概率,来对统计标注的结果给出一个可信度,这样对于所有的语料,先经过统计标注,然后对那些可信度小于阈值,或者说错误可能性高于阈值的统计标注结果,才进行人工校对和采用规则方法进行歧义消解。

词性标注的一致性检查与自动校对

在语料库建设中,词性标注的一致性检查和自动校对是不可缺少的重要环节。

一般情况下,语料库中出现的词性标注不一致现象主要由两种,一种情况是,词汇在词表中本来是非兼类词,只有一种词性标记,在语料中却被标注了不同的词性标记;另一种情况是,词汇在词表中本来就是兼类词,允许不同的词性标注,可在标注语料语境相同时出现了不同的词性标注。

第一种现象比较好解决,第二种现象可以采用基于聚类和分类的词性标注一致性检查方法,其基本观点是,同一个词在相似的上下文中应该具有相同的词性。所以,根据训练语料,可以对每个兼类词分别计算出词性标注相同时期上下文语境向量的平均值VA,然后计算该兼类词被标注成每个可能的词性符号时所在的上下文语境向量与相应的VA之间的关系,如果

与VA之间的距离大于了某个阈值H,则认为其可能出现了词性标注不一致。

然后是词性标注的自动校对方法,在计算机自动实现词性标注的语料中,错误情况一般分为两种,一种是,对于同样的情况,如果一个地方出错则通篇有错,一错到底。而另一种情况是,只有部分出错,这也就是前面的一致性问题之一,已经给出了解决方法。

而对于一错到底的情况,处理方法的基本思路实际上也相似,其基本思路是通过机器学习,从大规模训练语料中抽取每个兼类词在特定上下文语境中被标注的词性信息,形成一个词性校对决策表。这里用的不再是平均值了,对于被校对的标注语料,首先检测每个兼类词的上下文语境与决策表中的对应语境是否匹配,若匹配,则认为该校对语料中的兼类词的语境与决策表中的条件一直,那其兼类词的词性也应该一致。

Ⅱ jieba分词详解

“结巴”分词是一个Python 中文分词组件,参见 https://github.com/fxsjy/jieba
可以对中文文本进行 分词、词性标注、关键词抽取 等功能,并且支持自定义词典。

本文包括以下内容:
1、jieba分词包的 安装
2、jieba分词的 使用教程
3、jieba分词的 工作原理与工作流程
4、jieba分词所涉及到的 HMM、TextRank、TF-IDF等算法介绍

可以直接使用pip来进行安装:
sudo pip install jieba
或者
sudo pip3 install jieba

关键词抽取有两种算法,基于TF-IDF和基于TextRank:

jieba分词有三种不同的分词模式: 精确模式、全模式和搜索引擎模式

对应的,函数前加l即是对应得到list结果的函数:

精确模式是最常用的分词方法,全模式会将句子中所有可能的词都列举出来,搜索引擎模式则适用于搜索引擎使用。具体的差别可在下一节工作流程的分析中详述。

在上述每个函数中,都有名为HMM的参数。这一项表示是否在分词过程中利用HMM进行新词发现。关于HMM,本文附录中将简述相关知识。

另外分词支持自定义字典,词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
具体使用方法为:

关键词抽取的两个函数的完整参数为:

可以通过

来打开或关闭并行分词功能。
个人感觉一般用不到,大文件分词需要手动实现多进程并行,句子分词也不至于用这个。

jieba分词主要通过词典来进行分词及词性标注,两者使用了一个相同的词典。正因如此,分词的结果优劣将很大程度上取决于词典,虽然使用了HMM来进行新词发现。
jieba分词包整体的工作流程如下图所示:

下面将根据源码详细地分析各个模块的工作流程。

在之后几节中,我们在 蓝色的方框 中示范了关键步骤的输出样例或词典文件的格式样例。在本节中都采用类似的表示方式。

jieba分词中,首先通过对照典生成句子的 有向无环图 ,再根据选择的模式不同,根据词典 寻找最短路径 后对句子进行截取或直接对句子进行截取。对于未登陆词(不在词典中的词)使用 HMM 进行新词发现。

词典的格式应为
word1 freq1 word_type1
word2 freq2 word_type2

其中自定义用户词典中词性word_type可以省略。
词典在其他模块的流程中可能也会用到,为方便叙述,后续的流程图中将会省略词典的初始化部分。

图b演示了搜索引擎模式的工作流程,它会在精确模式分词的基础上,将长词再次进行切分。

在这里我们假定读者已经了解HMM相关知识,如果没有可先行阅读下一章内容中的HMM相关部分或者跳过本节。

在jieba分词中,将字在词中的位置B、M、E、S作为隐藏状态,字是观测状态,使用了词典文件分别存储字之间的表现概率矩阵(finalseg/prob_emit.py)、初始概率向量(finalseg/prob_start.py)和转移概率矩阵(finalseg/prob_trans.py)。这就是一个标准的 解码问题 ,根据概率再利用 viterbi算法 对最大可能的隐藏状态进行求解。

词性分析部分与分词模块用了同一个基础的分词器,对于词典词的词性,将直接从词典中提取,但是对于新词,词性分析部分有一个 专属的新词及其词性的发现模块
用于词性标注的HMM模型与用于分词的HMM模型相似,同样将文字序列视为可见状态,但是隐藏状态不再是单单的词的位置(B/E/M/S),而变成了词的位置与词性的组合,如(B,v)(B,n)(S,n)等等。因此其初始概率向量、转移概率矩阵和表现概率矩阵和上一节中所用的相比都要庞大的多,但是其本质以及运算步骤都没有变化。
具体的工作流程如下图所示。

jieba分词中有两种不同的用于关键词抽取的算法,分别为TextRank和TF-IDF。实现流程比较简单,其核心在于算法本身。下面简单地画出实现流程,具体的算法可以参阅下一章内容。

TextRank方法默认筛选词性,而TF-IDF方法模型不进行词性筛选。

在本章中,将会简单介绍相关的算法知识,主要包括用于新词发现的 隐马尔科夫模型 维特比算法 、用于关键词提取的 TextRank TF-IDF 算法。

HMM即隐马尔科夫模型,是一种基于马尔科夫假设的统计模型。之所以为“隐”,是因为相较于马尔科夫过程HMM有着未知的参数。在世界上,能看到的往往都是表象,而事物的真正状态往往都隐含在表象之下,并且与表象有一定的关联关系。

其中,S、O分别表示状态序列与观测序列。

如果读者还对这部分内容心存疑问,不妨先往下阅读,下面我们将以一个比较简单的例子对HMM及解码算法进行实际说明与演示,在读完下一小节之后再回来看这些式子,或许能够恍然大悟。

下面以一个简单的例子来进行阐述:
假设小明有一个网友小红,小红每天都会在朋友圈说明自己今天做了什么,并且假设其仅受当天天气的影响,而当天的天气也只受前一天天气的影响。
于小明而言,小红每天做了什么是可见状态,而小红那里的天气如何就是隐藏状态,这就构成了一个HMM模型。一个HMM模型需要有五个要素:隐藏状态集、观测集、转移概率、观测概率和初始状态概率。

即在第j个隐藏状态时,表现为i表现状态的概率。式中的n和m表示隐藏状态集和观测集中的数量。
本例中在不同的天气下,小红要做不同事情的概率也不同, 观测概率 以表格的形式呈现如下:

其中

除此之外,还需要一个初始状态概率向量π,它表示了观测开始时,即t=0时,隐藏状态的概率值。本例中我们指定 π={0,0,1}

至此,一个完整的 隐马尔科夫模型 已经定义完毕了。

HMM一般由三类问题:
概率计算问题 ,即给定 A,B,π 和隐藏状态序列,计算观测序列的概率;
预测问题 ,也成解码问题,已知 A,B,π 和观测序列,求最优可能对应的状态序列;
学习问题 ,已知观测序列,估计模型的 A,B,π 参数,使得在该模型下观测序列的概率最大,即用极大似然估计的方法估计参数。

在jieba分词中所用的是解码问题,所以此处对预测问题和学习问题不做深入探讨,在下一小节中我们将继续以本节中的例子为例,对解码问题进行求解。

在jieba分词中,采用了HMM进行新词发现,它将每一个字表示为B/M/E/S分别代表出现在词头、词中、词尾以及单字成词。将B/M/E/S作为HMM的隐藏状态,而连续的各个单字作为观测状态,其任务即为利用观测状态预测隐藏状态,并且其模型的 A,B,π 概率已经给出在文件中,所以这是一个标准的解码问题。在jieba分词中采用了 Viterbi算法 来进行求解。

Viterbi算法的基本思想是: 如果最佳路径经过一个点,那么起始点到这个点的路径一定是最短路径,否则用起始点到这点更短的一条路径代替这段,就会得到更短的路径,这显然是矛盾的;从起始点到结束点的路径,必然要经过第n个时刻,假如第n个时刻有k个状态,那么最终路径一定经过起始点到时刻n中k个状态里最短路径的点
将时刻t隐藏状态为i所有可能的状态转移路径i1到i2的状态最大值记为

下面我们继续以上一节中的例子来对viterbi算法进行阐述:
小明不知道小红是哪里人,他只能通过小红每天的活动来推断那里的天气。
假设连续三天,小红的活动依次为:“睡觉-打游戏-逛街”,我们将据此计算最有可能的天气情况。

表示第一天为雨天能够使得第二天为晴天的概率最大(也就是说如果第二天是晴天在最短路径上的话,第一天是雨天也一定在最短路径上,参见上文中Viterbi算法的基本思想)

此时已经到了最后的时刻,我们开始回溯。

其计算过程示意图如下图所示。

)的路径。

TF-IDF(词频-逆文本频率)是一种用以评估字词在文档中重要程度的统计方法。它的核心思想是,如果某个词在一篇文章中出现的频率即TF高,并且在其他文档中出现的很少,则认为这个词有很好的类别区分能力。

其中:

TextRank是一种用以关键词提取的算法,因为是基于PageRank的,所以先介绍PageRank。
PageRank通过互联网中的超链接关系确定一个网页的排名,其公式是通过一种投票的思想来设计的:如果我们计算网页A的PageRank值,那么我们需要知道哪些网页链接到A,即首先得到A的入链,然后通过入链给网页A进行投票来计算A的PR值。其公式为:

其中:

d为阻尼系数,取值范围为0-1,代表从一定点指向其他任意点的概率,一般取值0.85。
将上式多次迭代即可直到收敛即可得到结果。

TextRank算法基于PageRank的思想,利用投票机制对文本中重要成分进行排序。如果两个词在一个固定大小的窗口内共同出现过,则认为两个词之间存在连线。

公式与PageRank的基本相同。多次迭代直至收敛,即可得到结果。
在jieba分词中,TextRank设定的词窗口大小为5,将公式1迭代10次的结果作为最终权重的结果,而不一定迭代至收敛。

Ⅲ ikanalyzer 可以做词性标注吗

  • 可以的

Ⅳ 副词缩写ad.和adv.的区别

adj(形容词)樱岩:

一般用于修饰名词或者代词。形容词靠近所修饰的名词或代词,作定语。

adv(副词):

一般用于修饰形容词或动词。副词一般以ly结尾. 副词在句中作状语,一般靠近谓语动词或源辩者在句首或者句末。

一、(4)词性标注算法扩展阅读:

形容雹颂缺词(Adjective),很多语言中均有的主要词类中的一种。形容词主要用来描写或修饰名词或代词,表示人或事物的性质、状态、特征或属性,常用作定语,也可作表语、补语或状语。

副词(Adverb 简称adv.)是指在句子中表示行为或状态特征的词,用以修饰动词、形容词、其他副词或全句,表示时间、地点、程度、方式等概念。副词可分为:时间副词、频率副词、地点副词、方式副词、程度副词、疑问副词、连接副词、关系副词、表顺序的副词。

二、例句分析:

①a. Joelle is a pretty child.(形容词)
b. Tom will be back pretty soon.(副词)

②a. The old man has been ill for some time.(形容词)
b. Don't speak ill of others.(副词)

③a. What a deep ocean it is !(深的)
b. The boy g deep into the ground.(深)

④a. Look at the high mountain!(高的)
b. Birds fly high in the sky.(高)

⑤a. John came late yesterday.(迟)
b. John has been working hard lately.(最近)

Ⅳ 分词的定义及介绍

http://www.fullsearcher.com/n2004911134640735.asp什么是中文分词
众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。 中文分词技术
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。
现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。
1、基于字符串匹配的分词方法
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。
2、基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
3、基于统计的分词方法
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。笔者了解,海量科技的分词算法就采用“复方分词法”,所谓复方,相当于用中药中的复方概念,即用不同的药才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题。

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:333
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:374
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:610
java用什么软件写 发布:2025-05-18 03:56:19 浏览:31
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:106
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:940
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:737
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:801
网卡访问 发布:2025-05-18 03:35:04 浏览:507
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:370