关于【nlp文本分析中的统计方法】,今天乾乾小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
内容导航:1、nlp文本分析中的统计方法:NLP中的关键字提取方法总结和概述2、nlp文本分析中的统计方法,一文看懂NLP和中文分词算法1、nlp文本分析中的统计方法:NLP中的关键字提取方法总结和概述
关键词提取方法可以在文档中找到相关的关键词。在本文中,我总结了最常用的关键字提取方法。
什么是关键词提取?
关键字提取是从文本文档中检索关键字或关键短语。 这些关键词从文本文档的短语中选择出来的并且表征了文档的主题。 在本文中,我总结了最常用的自动提取关键字的方法。
自动从文档中提取关键字的方法是从文本文档中选择最常用和最重要的单词或短语的启发式方法。我将关键字提取方法归入自然语言处理领域,这是机器学习和人工智能中的一个重要领域。
关键字提取器用于提取单词(关键字)或创建短语(关键短语)的两个或多个单词的组。 在本文中,我使用术语关键字提取,其中包括关键字或关键短语提取。
为什么我们需要关键字提取的方法呢?
节省时间——根据关键词,可以决定文本的主题(例如文章)是否对他感兴趣以及是否阅读。 关键字向用户提供了该篇文章或文档主要内容摘要。
查找相关文档——大量文章的出现使得我们不可能全部进行阅读。 关键词提取算法可以帮助我们找到相关文章。 关键字提取算法还可以自动构建书籍、出版物或索引。
关键字提取作为机器学习的支持——关键字提取算法找到描述文本的最相关的词。 它们以后可以用于可视化或自动分类文本。
关键词提取方法
在本文中,我将概述一些最常用的关键字提取方法。 我会考虑无监督(不需要训练)和领域独立的方法。 我将方法分为三组:统计方法、基于图的方法和基于向量嵌入的方法。
基于统计的方法
统计方法是最简单的。 他们计算关键字的统计数据并使用这些统计数据对它们进行评分。 一些最简单的统计方法是词频、词搭配和共现。 也有一些更复杂的,例如 TF-IDF 和 YAKE!。
TF-IDF 或term frequency–inverse document frequency,会计算文档中单词相对于整个语料库(更多文档集)的重要性。 它计算文档中每个词的频率,并通过词在整个语料库中的频率的倒数对其进行加权。 最后,选择得分最高的词作为关键词。
TF-IDF 的公式如下:
其中 t 是观察项。 该等式应用于文档中的每个术语(单词或短语)。 方程的蓝色部分是词频(TF),橙色部分是逆文档频率(IDF)。
TF-IDF 的想法是文档中出现频率更高的词不一定是最相关的。 该算法偏爱在文本文档中频繁出现而在其他文档中不常见的术语。
TF-IDF 的优点是速度快,缺点是需要至少几十个文档的语料库。并且 TF-IDF 与语言无关。
YAKE (Yet Another Keyword Extractor) 是一种关键字提取方法,它利用单个文档的统计特征来提取关键字。 它通过五个步骤提取关键字:
1、预处理和候选词识别——文本被分成句子、块(句子的一部分用标点符号分隔)和标记。文本被清理、标记和停用词也会被识别。
2、特征提取——算法计算文档中术语(单词)的以下五个统计特征:
a) 大小写——计算该术语在文本中出现大写或作为首字母缩略词的次数(与所有出现成比例)。重要的术语通常更频繁地出现大写。
b) 词条位置——词条在文本中的中间位置。更接近开头的术语过去更重要。
c) 词频归一化——测量文档中的平衡词频。
d) 术语与上下文的相关性——衡量候选术语同时出现的不同术语的数量。更重要的术语与较少不同的术语同时出现。
e) 术语不同的句子——测量术语在不同句子中出现的次数。得分越高表示术语越重要。
3、计算术语分数——上一步的特征与人造方程组合成一个单一的分数。
4、生成 n-gram 并计算关键字分数——该算法识别所有有效的 n-gram。 n-gram 中的单词必须属于同一块,并且不能以停用词开头或结尾。然后通过将每个 n-gram 的成员分数相乘并对其进行归一化,以减少 n-gram 长度的影响。停用词的处理方式有所不同,以尽量减少其影响。
5、重复数据删除和排名——在最后一步算法删除相似的关键字。它保留了更相关的那个(分数较低的那个)。使用 Levenshtein 相似度、Jaro-Winkler 相似度或序列匹配器计算相似度。最后,关键字列表根据它们的分数进行排序。
YAKE 的优势在于它不依赖于外部语料库、文本文档的长度、语言或领域。 与 TF-IDF 相比,它在单个文档的基础上提取关键字,并且不需要庞大的语料库。
基于图的方法
基于图的方法从文档中生成相关术语的图。 例如,图将文本中共同出现的术语连接起来。 基于图的方法使用图排序方法,该方法考虑图的结构来对顶点重要性进行评分。 最著名的基于图的方法之一是 TextRank。
TextRank 是一种基于图的排序方法,用于提取相关句子或查找关键字。 我将重点介绍它在关键字提取中的用法。 该方法通过以下步骤提取关键字:
1、带有词性 (PoS) 标签的文本标记化和注释
2、词共现图构建——图中的顶点是带有选定 PoS 标签的词(作者仅选择名词和形容词即可获得最佳结果)。如果两个顶点出现在文本中的 N 个单词的窗口内,则它们与一条边相连(根据作者的实验,最佳表现 N 为 2)。该图是无向和未加权的。
3、图排序——每个顶点的分数设置为1,在图上运行排序算法。作者使用 Google 的 PageRank 算法,该算法主要用于对网站图表进行排名。该算法使用上图中的公式。顶点 Vi 的权重 S(Vi) 是通过考虑连接到节点 Vi 的顶点的权重来计算的。在等式中,d 是设置为 0.85 的阻尼因子,如 PageRank 文章中所述。 In(Vi) 是到顶点 Vi 的入站链接,而 Out(Vj) 是来自顶点 Vj 的出站链接。由于我们考虑的是无向图,因此顶点的入站链接和顶点的出站链接是相同的。该算法在每个节点上运行多次迭代,直到节点上的权重收敛——迭代之间的变化低于 0.0001。
4、得分最高的单词选择——单词(顶点)从得分最高的单词到最低得分的单词排序。最后,算法选择单词的前 1/3。
5、关键词提取——在这一步中,如果上一阶段选择的单词一起出现在文本中,则将它们连接为多词关键词。新构建的关键字的分数是单词分数的总和。
该算法对每个文档单独执行,不需要一个文档语料库来进行关键字提取。TextRank也是语言无关的。
RAKE (Rapid Automatic Keyword Extraction)是另一种基于图的关键字提取算法。该算法是基于这样的观察:关键字通常由多个单词组成,通常不包括停顿词或标点符号。
它包括以下步骤:
1、候选关键词提取——基于停用词和短语分隔符对候选关键词进行文本分割。候选关键字是位于两个停用词或短语定界符之间的短语。例如,短语分隔符是标点符号。
2、关键词共现图构建——图中的顶点是单词。如果它们一起出现在候选关键字中,则它们是连接的。该图是加权的——权重是连接词在候选关键字中一起出现的次数。该图还包括与顶点本身的连接(每个单词与自身一起出现在候选关键字中)。
3、词评分——图中的每个词都用以下评分之一评分:
a) 词度 deg(w)——词 w 共同出现的词数(边权重总和,包括指向顶点本身的边)。度数偏爱出现频率更高、关键字更长的词。
b) 词频 freq(w) — 该词出现在任何候选关键字中的次数。频率偏爱出现频率更高的词。
c) 度数与频率之比 deg(w)/freq(w)——这个指标偏向于主要出现在较长候选关键词中的词。建议使用词度或度数与频率之比。从这两个角度来看,排名将有利于较短的关键字。
4、候选关键词得分——每个候选关键词的得分为其成员词得分之和。
5、相邻关键词——候选关键词不包括停用词。由于有时停用词可能是关键字的一部分,因此在此步骤中添加了它们。该算法在文本中找到与停用词连接的关键字对,并将它们添加到现有停用词集中。它们必须在要添加的文本中至少出现两次。新关键字的得分是其成员关键字的总和。
6、关键词提取——结果,1/3 得分最高的关键词被提取出来。
RAKE 和 TextRank 的主要区别在于 RAKE 考虑候选关键字内的共现而不是固定窗口。 它使用更简单、更具统计性的评分程序。 该算法对每个文档分别进行,因此不需要文档语料库来进行关键词提取。
基于深度学习
深度学习的出现使基于嵌入的方法成为可能。 研究人员开发了几种使用文档嵌入的关键字提取方法(例如 Bennani 等人)。
这些方法主要查找候选关键字列表(例如,Bennani 等人只考虑由名词和形容词组成的关键字)。 他们将文档和候选关键字嵌入到相同的嵌入空间中,并测量文档和关键字嵌入之间的相似度(例如余弦相似度)。 他们根据相似度度量选择与文档文本最相似的关键字。
总结
在本文中介绍了几种从统计、基于图和嵌入方法中提取关键字的方法。 由于该领域非常活跃,我只介绍最常见的方法。我只考虑无监督方法的一个子组(它们不需要训练)。 也有在带注释文档的训练数据集上训练的监督方法。 它们表现良好,但在实践中较少使用,因为它们需要训练并且需要带注释的文档数据集,结果也通常仅适用于训练数据集中的主题。
引用
[1]Bennani-Smires, Kamil, et al. Simple unsupervised keyphrase extraction using sentence embeddings. arXiv preprint arXiv:1801.04470, 2018.
[1] Campos, Ricardo, et al. YAKE! Keyword extraction from single documents using multiple local features. Information Sciences, 2020, 509: 257–289.
2、nlp文本分析中的统计方法,一文看懂NLP和中文分词算法
导读:在人类社会中,语言扮演着重要的角色,语言是人类区别于其他动物的根本标志,没有语言,人类的思维无从谈起,沟通交流更是无源之水。
所谓“自然”乃是寓意自然进化形成,是为了区分一些人造语言,类似C 、Java等人为设计的语言。
NLP的目的是让计算机能够处理、理解以及运用人类语言,达到人与计算机之间的有效通讯。
作者:涂铭 刘祥 刘树春
本文摘编自《Python自然语言处理实战:核心技术与算法》,如需转载请联系我们
01 什么是NLP1. NLP的概念
NLP(Natural Language Processing,自然语言处理)是计算机科学领域以及人工智能领域的一个重要的研究方向,它研究用计算机来处理、理解以及运用人类语言(如中文、英文等),达到人与计算机之间进行有效通讯。
在一般情况下,用户可能不熟悉机器语言,所以自然语言处理技术可以帮助这样的用户使用自然语言和机器交流。从建模的角度看,为了方便计算机处理,自然语言可以被定义为一组规则或符号的集合,我们组合集合中的符号来传递各种信息。
这些年,NLP研究取得了长足的进步,逐渐发展成为一门独立的学科,从自然语言的角度出发,NLP基本可以分为两个部分:自然语言处理以及自然语言生成,演化为理解和生成文本的任务,如图所示。
▲NLP的基本分类
自然语言的理解是个综合的系统工程,它又包含了很多细分学科,有代表声音的音系学,代表构词法的词态学,代表语句结构的句法学,代表理解的语义句法学和语用学。
音系学:指代语言中发音的系统化组织。词态学:研究单词构成以及相互之间的关系。句法学:给定文本的哪部分是语法正确的。语义学:给定文本的含义是什么?语用学:文本的目的是什么?语言理解涉及语言、语境和各种语言形式的学科。而自然语言生成(Natural Language Generation,NLG)恰恰相反,从结构化数据中以读取的方式自动生成文本。该过程主要包含三个阶段:
文本规划:完成结构化数据中的基础内容规划语句规划:从结构化数据中组合语句来表达信息流实现:产生语法通顺的语句来表达文本2. NLP的研究任务
NLP可以被应用于很多领域,这里大概总结出以下几种通用的应用:
机器翻译:计算机具备将一种语言翻译成另一种语言的能力。情感分析:计算机能够判断用户评论是否积极。智能问答:计算机能够正确回答输入的问题。文摘生成:计算机能够准确归纳、总结并产生文本摘要。文本分类:计算机能够采集各种文章,进行主题分析,从而进行自动分类。舆论分析:计算机能够判断目前舆论的导向。知识图谱:知识点相互连接而成的语义网络。机器翻译是自然语言处理中最为人所熟知的场景,国内外有很多比较成熟的机器翻译产品,比如百度翻译、Google翻译等,还有提供支持语音输入的多国语言互译的产品。
情感分析在一些评论网站比较有用,比如某餐饮网站的评论中会有非常多拔草的客人的评价,如果一眼扫过去满眼都是又贵又难吃,那谁还想去呢?另外有些商家为了获取大量的客户不惜雇佣水军灌水,那就可以通过自然语言处理来做水军识别,情感分析来分析总体用户评价是积极还是消极。
智能问答在一些电商网站有非常实际的价值,比如代替人工充当客服角色,有很多基本而且重复的问题,其实并不需要人工客服来解决,通过智能问答系统可以筛选掉大量重复的问题,使得人工座席能更好地服务客户。
文摘生成利用计算机自动地从原始文献中摘取文摘,全面准确地反映某一文献的中心内容。这个技术可以帮助人们节省大量的时间成本,而且效率更高。
文本分类是机器对文本按照一定的分类体系自动标注类别的过程。举一个例子,垃圾邮件是一种令人头痛的顽症,困扰着非常多的互联网用户。2002年,Paul Graham提出使用“贝叶斯推断”来过滤垃圾邮件,1000封垃圾邮件中可以过滤掉995封并且没有一个是误判,另外这种过滤器还具有自我学习功能,会根据新收到的邮件,不断调整。也就是说收到的垃圾邮件越多,相对应的判断垃圾邮件的准确率就越高。
舆论分析可以帮助分析哪些话题是目前的热点,分析传播路径以及发展趋势,对于不好的舆论导向可以进行有效的控制。
知识图谱(Knowledge Graph/Vault)又称科学知识图谱,在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。知识图谱的一般表现形式如图所示。
▲知识图谱图示
3. NLP相关知识的构成
3.1 基本术语
为了帮助读者更好地学习NLP,这里会一一介绍NLP领域的一些基础专业词汇。
(1)分词(segment)
词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文分词的基础与关键。
中文和英文都存在分词的需求,不过相较而言,英文单词本来就有空格进行分割,所以处理起来相对方便。但是,由于中文是没有分隔符的,所以分词的问题就比较重要。
分词常用的手段是基于字典的最长串匹配,据说可以解决85%的问题,但是歧义分词很难。举个例子,“美国会通过对台售武法案”,我们既可以切分为“美国/会/通过对台售武法案”,又可以切分成“美/国会/通过对台售武法案”。
(2)词性标注(part-of-speech tagging)
基于机器学习的方法里,往往需要对词的词性进行标注。词性一般是指动词、名词、形容词等。标注的目的是表征词的一种隐藏状态,隐藏状态构成的转移就构成了状态转移序列。例如:我/r爱/v北京/ns天安门/ns。其中,ns代表名词,v代表动词,ns、v都是标注,以此类推。
(3)命名实体识别(NER,Named Entity Recognition)
命名实体是指从文本中识别具有特定类别的实体(通常是名词),例如人名、地名、机构名、专有名词等。
(4)句法分析(syntax parsing)
句法分析往往是一种基于规则的专家系统。当然也不是说它不能用统计学的方法进行构建,不过最初的时候,还是利用语言学专家的知识来构建的。句法分析的目的是解析句子中各个成分的依赖关系。
所以,往往最终生成的结果是一棵句法分析树。句法分析可以解决传统词袋模型不考虑上下文的问题。比如,“小李是小杨的班长”和“小杨是小李的班长”,这两句话,用词袋模型是完全相同的,但是句法分析可以分析出其中的主从关系,真正理清句子的关系。
(5)指代消解(anaphora resolution)
中文中代词出现的频率很高,它的作用的是用来表征前文出现过的人名、地名等。
例如,清华大学坐落于北京,这家大学是目前中国最好的大学之一。在这句话中,其实“清华大学”这个词出现了两次,“这家大学”指代的就是清华大学。但是出于中文的习惯,我们不会把“清华大学”再重复一遍。
(6)情感识别(emotion recognition)
所谓情感识别,本质上是分类问题,经常被应用在舆情分析等领域。情感一般可以分为两类,即正面、负面,也可以是三类,在前面的基础上,再加上中性类别。
一般来说,在电商企业,情感识别可以分析商品评价的好坏,以此作为下一个环节的评判依据。通常可以基于词袋模型 分类器,或者现在流行的词向量模型 RNN。经过测试发现,后者比前者准确率略有提升。
(7)纠错(correction)
自动纠错在搜索技术以及输入法中利用得很多。由于用户的输入出错的可能性比较大,出错的场景也比较多。所以,我们需要一个纠错系统。具体做法有很多,可以基于N-Gram进行纠错,也可以通过字典树、有限状态机等方法进行纠错。
(8)问答系统(QA system)
这是一种类似机器人的人工智能系统。比较著名的有:苹果Siri、IBM Watson、微软小冰等。问答系统往往需要语音识别、合成,自然语言理解、知识图谱等多项技术的配合才会实现得比较好。
3.2 知识结构
作为一门综合学科,NLP是研究人与机器之间用自然语言进行有效通信的理论和方法。这需要很多跨学科的知识,需要语言学、统计学、最优化理论、机器学习、深度学习以及自然语言处理相关理论模型知识做基础。
作为一门杂学,NLP可谓是包罗万象,体系化与特殊化并存,这里简单罗列其知识体系,知识结构结构图如图所示。
▲知识结构图示
自然语言的学习,需要有以下几个前置知识体系:
目前主流的自然语言处理技术使用python来编写。统计学以及线性代数入门。02 中文分词技术1. 中文分词简介
“词”这个概念一直是汉语语言学界纠缠不清而又绕不开的问题。“词是什么”(词的抽象定义)和“什么是词”(词的具体界定),这两个基本问题迄今为止也未能有一个权威、明确的表述,更无法拿出令大众认同的词表来。主要难点在于汉语结构与印欧体系语种差异甚大,对词的构成边界方面很难进行界定。
比如,在英语中,单词本身就是“词”的表达,一篇英文文章就是“单词”加分隔符(空格)来表示的,而在汉语中,词以字为基本单位的,但是一篇文章的语义表达却仍然是以词来划分的。
因此,在处理中文文本时,需要进行分词处理,将句子转化为词的表示。这个切词处理过程就是中文分词,它通过计算机自动识别出句子的词,在词间加入边界标记符,分隔出各个词汇。
整个过程看似简单,然而实践起来却很复杂,主要的困难在于分词歧义。以NLP分词的经典语句举例,“结婚的和尚未结婚的”,应该分词为“结婚/的/和/尚未/结婚/的”,还是“结婚/的/和尚/未/结婚/的”?这个由人来判定都是问题,机器就更难处理了。
此外,像未登录词、分词粒度粗细等都是影响分词效果的重要因素。
自中文自动分词被提出以来,历经将近30年的探索,提出了很多方法,可主要归纳为“规则分词”“统计分词”和“混合分词(规则 统计)”这三个主要流派。
规则分词是最早兴起的方法,主要是通过人工设立词库,按照一定方式进行匹配切分,其实现简单高效,但对新词很难进行处理。随后统计机器学习技术的兴起,应用于分词任务上后,就有了统计分词,能够较好应对新词发现等特殊场景。然而实践中,单纯的统计分词也有缺陷,那就是太过于依赖语料的质量,因此实践中多是采用这两种方法的结合,即混合分词。下面将详细介绍这些方法的代表性算法。
2. 规则分词
基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配,找到则切分,否则不予切分。
按照匹配切分的方式,主要有正向最大匹配法、逆向最大匹配法以及双向最大匹配法三种方法。
2.1 正向最大匹配法
正向最大匹配(Maximum Match Method,MM法)的基本思想为:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典。若字典中存在这样的一个i字词,则匹配成功,匹配字段被作为一个词切分出来。如果词典中找不到这样的一个i字词,则匹配失败,将匹配字段中的最后一个字去掉,对剩下的字串重新进行匹配处理。
如此进行下去,直到匹配成功,即切分出一个词或剩余字串的长度为零为止。这样就完成了一轮匹配,然后取下一个i字字串进行匹配处理,直到文档被扫描完为止。
其算法描述如下:
从左向右取待切分汉语句的m个字符作为匹配字段,m为机器词典中最长词条的字符数。查找机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。比如我们现在有个词典,最长词的长度为5,词典中存在“南京市长”和“长江大桥”两个词。
现采用正向最大匹配对句子“南京市长江大桥”进行分词,那么首先从句子中取出前五个字“南京市长江”,发现词典中没有该词,于是缩小长度,取前4个字“南京市长”,词典中存在该词,于是该词被确认切分。再将剩下的“江大桥”按照同样方式切分,得到“江”“大桥”,最终分为“南京市长”“江”“大桥”3个词。
显然,这种结果还不是我们想要的。
2.2 逆向最大匹配法
逆向最大匹配(Reverse Maximum Match Method,RMM法)的基本原理与MM法相同,不同的是分词切分的方向与MM法相反。逆向最大匹配法从被处理文档的末端开始匹配扫描,每次取最末端的i个字符(i为词典中最长词数)作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。相应地,它使用的分词词典是逆序词典,其中的每个词条都将按逆序方式存放。
在实际处理时,先将文档进行倒排处理,生成逆序文档。然后,根据逆序词典,对逆序文档用正向最大匹配法处理即可。
由于汉语中偏正结构较多,若从后向前匹配,可以适当提高精确度。所以,逆向最大匹配法比正向最大匹配法的误差要小。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。
比如之前的“南京市长江大桥”,按照逆向最大匹配,最终得到“南京市”“长江大桥”。当然,如此切分并不代表完全正确,可能有个叫“江大桥”的“南京市长”也说不定。
2.3 双向最大匹配法
双向最大匹配法(Bi-directction Matching method)是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。
据SunM.S.和Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分虽重合却是错的,或者正向最大匹配法和逆向最大匹配法切分不同但两个都不对(歧义检测失败)。这正是双向最大匹配法在实用中文信息处理系统中得以广泛使用的原因。
前面举例的“南京市长江大桥”,采用该方法,中间产生“南京市/长江/大桥”和“南京市/长江大桥”两种结果,最终选取词数较少的“南京市/长江大桥”这一结果。
下面是一段实现逆向最大匹配的代码。
#逆向最大匹配class IMM(object): def __init__(self, dic_path): self.dictionary = set() self.maximum = 0 #读取词典 with open(dic_path, 'r', encoding='utf8') as f: for line in f: line = line.strip() if not line: continue self.dictionary.add(line) self.maximum = len(line) def cut(self, text): result = [] index = len(text) while index > 0: word = None for size in range(self.maximum, 0, -1): if index - size < 0: continue piece = text[(index - size):index] if piece in self.dictionary: word = piece result.append(word) index -= size break if word is None: index -= 1 return result[::-1]def main(): text = "南京市长江大桥" tokenizer = IMM('./data/imm_dic.utf8') print(tokenizer.cut(text))
运行main函数,结果为:
['南京市', '长江大桥']
基于规则的分词,一般都较为简单高效,但是词典的维护是一个很庞大的工程。在网络发达的今天,网络新词层出不穷,很难通过词典覆盖到所有词。
3. 统计分词
随着大规模语料库的建立,统计机器学习方法的研究和发展,基于统计的中文分词算法渐渐成为主流。
其主要思想是把每个词看做是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。
因此我们就可以利用字与字相邻出现的频率来反应成词的可靠度,统计语料中相邻共现的各个字的组合的频度,当组合频度高于某一个临界值时,我们便可认为此字组可能会构成一个词语。
基于统计的分词,一般要做如下两步操作:
建立统计语言模型。对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式。这里就用到了统计学习算法,如隐含马尔可夫(HMM)、条件随机场(CRF)等。限于篇幅,本文只对统计分词相关技术做简要介绍。更多详细内容请参考《Python自然语言处理实战:核心技术与算法》一书第3章第3.3节。
4. 混合分词
事实上,目前不管是基于规则的算法、还是基于HMM、CRF或者deep learning等的方法,其分词效果在具体任务中,其实差距并没有那么明显。在实际工程应用中,多是基于一种分词算法,然后用其他分词算法加以辅助。
最常用的方式就是先基于词典的方式进行分词,然后再用统计分词方法进行辅助。如此,能在保证词典分词准确率的基础上,对未登录词和歧义词有较好的识别。
关于作者:涂铭,阿里巴巴数据架构师,对大数据、自然语言处理、Python、Java相关技术有深入的研究,积累了丰富的实践经验。刘祥,百炼智能自然语言处理专家,主要研究知识图谱、NLG等前沿技术,参与机器自动写作产品的研发与设计。刘树春,七牛云高级算法专家,七牛AI实验室NLP&OCR方向负责人,主要负责七牛NLP以及OCR相关项目的研究与落地。本文摘编自《Python自然语言处理实战:核心技术与算法》,经出版方授权发布。
延伸阅读《Python自然语言处理实战》
推荐语:阿里巴巴、前明略数据和七牛云的高级专家和科学家撰写,零基础掌握NLP的核心技术、方法论和经典算法。
本文关键词:nlp 文本分析,nlp文本分析中的统计方法有哪些,nlp数据分析,nlp文本分析中的统计方法包括,nlp文本分类算法。这就是关于《nlp文本分析中的统计方法,NLP中的关键字提取方法总结和概述》的所有内容,希望对您能有所帮助!