您的位置  > 互联网

分词的难点在哪里?算法的两个重要考虑

说到分词,大多数人最容易想到的就是中文分词。 作为一种没有自然空间的语言,分段可以帮助计算机索引句子、促进信息检索等。 换句话说,减少搜索引擎的性能消耗。 常用汉字有5000多个,常用汉字有数十万个。 如果将每个单词都以倒置索引的方式进行索引,则每个单词对应的拉链可能会很长。 因此,通常使用短语而不是汉字进行索引。 另外,分词更重要的作用是帮助计算机理解单词。 在这个层面上,分词无论语言、计算机都与“理解”有关。 首先要做的就是先进行分词,然后消除一定程度的歧义。 性别。 因为知道计算机本身擅长的东西与计算是一致的。 假设每个词都可以表示一件事。 当输入一个句子时,每个单词对应含义的积累弱于语法含义的积累。 (因为当单词的意义单独积累时,单词之间可能存在独立性。)现在引入区分的目的是为了画出单词之间的关系,以便计算机更好地理解。

分词的难点是什么?

简单来说,分词效果的评价可以从三个层面来判断。 换句话说,你可以划定界限,分成片段,再细分整个句子来判断结果是否正确。 是相邻token之间要切断的边界(在中文分词中,token可以认为是汉字,在英语中可以认为是单词)。 句子级别是指整个句子的分词结果是否完全正确。 细分是两者之间的评估策略。 1、分词结果片段中需要修剪的片段()是否被召回。 2、分词结果是否有错误结果()。 接下来我们讲解分词算法的两个重要考虑因素:新词识别和模糊处理。

新词:分词算法在召回方向的问题主要是模糊现象和新词的出现。 如果分词算法在不回忆新词的情况下就无法识别新词,最终可能会影响计算机对分词句子的理解。 我之前提到过,单词到单词的过程允许计算机“假装”单词的含义。 例如,最近通过分词算法分割出一个人的名字“石菊花”后,计算机很难理解这个片段的含义,因此无法在机器翻译等应用中正确处理。

模糊性:分词算法需要解决片段的模糊性,使分词结果合理。 汉字是中文信息的载体。 假设每个词/词所代表的信息有上限,每种语言的信息总量接近,常用词的数量有限。 因此,需要更多的这些汉字的组合来形成单词。 表达不同的含义。 如果一个汉字可以同时是两个词的一部分,那么这两个词相继出现时可能会产生歧义。 目前模糊性主要有两种类型。 交叉类型,即相邻片段之间存在一些Token重复。 例如“长春长春药房”、“长春市”、“市长/市场”、“长春”、“壮阳药”等都是跨类型歧义。 这存在于英语、《纽约时报》、《纽约时报》、《泰晤士报》等所有语言的分词过程中。 另一个模糊之处是覆盖类型。 换句话说,令牌序列必须从不同的含义(例如“他即将到来”和“他正在从马上下来”)进行分段或组合。 在后一种情况下,如果除以“立即”,则表示“在言语中等”的含义。 被“立即”的含义所覆盖。 此外,分词算法还必须在应用中具有良好的性能,在引入统计学习算法时必须考虑语言标注成本。 语言随着时间的推移而变化,但在不同领域变化的速度不同。 因此,分词算法也需要与时俱进地优化。 例如,在一些向词典添加更多单词、更新语言模型(Model)、基于条件随机场(CRF)等判别式(模型)进行分词的方法中,需要时常更新人工标注的语料库,以使分词算法符合当前语料库的处理。

分词算法是一个基础研究方向,也是众多研究者努力产出大量优秀算法的方向。 简单介绍一下在工程中具有具体应用的几种主流分词方法。

介绍主流的分割方法

在介绍分词方法之前,我们先从基于规则的分词方法和部分统计分词模型两个方面简单介绍一下现有的主流分词算法。

基于规则的分词方法

基于规则的分词方法主要以基于字典的匹配为代表,如前向最大匹配(FMM)、反向最大匹配、最小分词(最小化每个句子中的截断词数量)等。

以前向最大匹配为例,基本思想是对于待处理的文本,从左到右,尽可能匹配字典中最长的单词。 匹配到的词是对应的处理后的文本的分词片段。 假设字典中有{seo、seo技术、中文、分词、算法}这个词,那么“seo技术的中文分词算法”这句话的准确分词结果为“seo技术|的|中文|词”分割|算法”。

基于规则匹配的分词算法的缺点主要有(1)。 不能很好地解决分词歧义问题。 以上三种方法都试图从不同角度解决问题,但对于消除歧义效果甚微。 特别是,随着词典单词数量的增加,单词之间的交叉现象会加深,该方法的模糊处理能力也会相应减弱。 (2)。 此方法无法识别新单词。 这样一来,直线挖掘出很多新词并加入到词典中的好处与整体效果并不是线性相关的。 词典将会扩大,分词歧义将会更加严重。

这种方法简单、快速,因此也有具有上述缺点的统计方法应用于FMM工作中。 该方法主要利用贝叶斯(Na?ve Bayes)、t-test chi-2等测试工具来消除具有分词歧义的相邻片段。

统计分词模型

统计分词算法主要利用语言模型、标记数据等资源根据分词假设建立模型,利用这些资源优化参数,用模型代替规则完成分词。

语言模型,基于马尔可夫分词方法

处理的每个token(t_i,可以认为是中文分词中的一个汉字,英文中的一个单词等)构成一个观察序列,隐含着各种可能的分词片段。该方法的目的是观察序列并找到最有可能发生的隐式状态序列

其中每个状态 (s_i) 都是一个字典单词。 整个分词过程就是寻找可行的分词结果。

使用马尔可夫假设实现。

如果词典单词具有多种概率分布(使用语言模型估计、使用EM算法优化参数等),则很容易根据解码算法得到分词结果。 随着语言模型的广泛应用和多种学习算法的发展,该方法具有广泛的应用场景。

现在我们来谈谈这种方法的缺点。

1. 计算顺序

在计算概率时,根据马尔可夫假设,当前状态仅与先前状态相关。 在实际应用中,当前状态可能与前一个状态相关,可能与前一个状态相关,也可能与前一个状态无关(在一定阈值条件下是否存在关系等)。

2.在估计字典之间的概率分布时,EM作为常用的算法,也有其自身的缺点。

条件随机场模型 ( )

CRF 是具有最大条件概率的组合。 NLP技术领域主要用于文本标注。 应用场景主要是分词(标记词位信息、构词)、词性标注(Pos-)、标注词性(如名词、动词、助词)、命名实体识别(四状态:词首(Begin)、词中()、词尾(End)、单独存在()等。分词过程是一个用观察序列的token表示的过程。对于输入序列

标记顺序如下

输入顺序的条件概率:

其中,z为归一化函数,等于所有可能的标签序列的条件概率之和。

“特征函数”( ),对应权重

该特征函数用于在观测序列t下执行当前计算阶段I的状态序列

目标是找到实现最大值的标记序列。

如果有多个概率分布可供计算,那么可以使用算法轻松获得该序列的标签。 根据每个标记(令牌)的状态进行分段。

CRFs模型的中文在一些封闭测试语料库中取得了非常高的准确率,在工业应用中效果也可圈可点。 同时,在中文分词中,CRF分词是一种基于汉字的构词方法。 无论“新词”是否出现在网络上,它都能有效识别具有结构特征的新词。 CRF有两个明显的缺点:性能和成本。 性能是指解码阶段消耗的大量计算量。 作为监督学习,CRF模型教育需要大量的标记数据。 在线语料库的快速增加和变化,以及CRF模型的更新也需要更多的人力。 如何将CRF模型有效融入到工业分词应用中,如何引入语言模型来更新统计分词模型。

此外,CRF模型在中文分词方面也取得了非常好的效果。 可以直接移植到其他语言吗? 当语言特征和语料存在关系时,整个分词算法能否正常工作?

介绍了各种分词模型的原理并分析了应用场景。 如果需要将两个词拆分在一起,假设在一定条件下这两个词分布紧密,那么采用什么分词算法呢?

基于统计语言模型的无监督分词

引入一种新的基于隐马尔可夫马尔可夫(HMM)的无监督分词算法(Query Based on Eigen Space)。 在介绍具体算法之前,我们先来说一下这个算法的假设。 AB可以一起共享两个代币。 也就是说,在一定条件下(即整个句子的上下文要划分),两个人的数据分布是比较相似的。 如果你能得到那个数据分布(),你就可以计算两者之间的相似度。 这种方法看起来有点像“多信息”( ),但互信息没有考虑前面提到的具体条件,不过也有针对 MI 引入 Point-Wise 的工作。 考虑到上下文信息,有一个问题会更加棘手。 确定两个代币是否应该合并的阈值应该是多少? 在某些操作中,[查询]阈值被设置为经验值。 事实上,这样做可能并不合理。 通过各种方法构建了这种分词的上下文环境,并将统计特征巧妙地投影到主特征空间( )中。 在线性代数中,特征空间是矩阵中所有特征向量构成的空间,主特征空间是矩阵中主特征向量构成的空间。 与比较特征空间相比,基础特征空间可以覆盖特征空间的大部分信息,支持相关应用,并实现有效的降维、去噪、数据转换等)可以计算相似度并基于特征空间进行分词基本特征空间的维数。

算法流程【seo技术】

举个例子来说明这个算法是如何工作的。 如下所示。

算法分析

该算法的关键点在于主特征空间维度K的确定。从另一个角度来看,对于给定的待分割字符串,如果预先知道需要分割的分片数量,则可以采用简单的统计策略(如MI)用于更好地分割单词。

对于参数K的确定,给出了一种简单的判断方法。 这种分词算法根据数据分布将假设扩展为分词特征,并通过基本Token在一定相关意义上的统计分布进行细分。 与基于EM/HMM等模型的无监督分词算法相比,一个明显的优势是充分考虑整个分词段的信息,而不是相邻token之间的统计数据。 同时,该方法倾向于通过空间变换等手段有效执行数据删除等策略,使数据分布更加真实。

与CRF等监督学习相比,输入是ngram语言模型,不需要手动显示数据。 这种方法可以识别生词,在互联网应用中非常有益。 同时,对于不同语言无法理解的领域,只要提供足够可靠的语言模型,就可以极大地解决分词的需求。

当然,这种方法(或无监督分词方法)与基于监督的模型相比,在分词准确率上仍然存在差异。 下面的部分说明了这个问题,并提供了一个绘制的分词系统。

如何构建一个好的分词框架

一般而言

词典是不断更新词典的必要且有效的手段。 这些词典在分词系统中的地位和作用可能根据应用需求的不同而不同。 需要强大的语言模型。 原因是,如果AB的两个代币要共享在一起,那么网络上就会大量出现组合“AB”。 还需要人工标记的数据。 这是对文章的主观理解,因为信息并未分布在语料库中。

我们先说一下无监督和监督这两种方式的区别。 如果无监督的效果能赶上有监督的方法,有监督的方法就可以说再见了。 那么,无监督方法分词效果的瓶颈来自哪里呢? 举个例子来说明。 很多用户遇到不认识的单词时,都会通过以下方法进行搜索学习:“查询” * * 头部加1? 嗯? ”,例如“但是带有十字准线的头发这个词是什么”等。无监督学习是根据数据的分布开始的,所以在这种情况下,“头发加1”或“加1”会被截断。事实整体来看,这种分词方法与人们的理解有所不同,这是一个极端的例子,数据分布与人们主观理解不一致的因素有很多。

监督是用来解决问题的。 主要重点是考虑局部一致性。 也就是说,所有工作都是基于显示的数据进行的,标注的语料库决定了最终的算法效果。 无监督方法从全局数据分布的角度来看,在特定需求下,如果数据具有全局结构特征,无监督模型也可以很好地解决。

这里有一个愿景,引入一些标注数据,改变数据原来的分布,最终优化分词效果。 半监督学习(semi-)的引入可以大大提高无监督分词的效果。 之所以引入无监督分词算法,是因为该方法可以与现有的反病毒学习算法相结合。

结合上面所说的,解释一下你认为一个好的分词系统应该是什么样子。

你需要一本字典。 字典的来源有很多如“固有名称挖掘”(NE)、“旧名挖掘”()等,同时还有不同程度处理这些资源的模块,最终得到一个按前向最大值细分的字典提供匹配(FMM)。 使用FMM的原因是该算法可以完整地处理许多待处理语句。 只有当FMM无法解决问题时,才会引入统计分词算法。 这个时候就需要你来负责这项工作了。 该模块可以将一个句子分为两种形式。 它需要可以用FMM处理的简单句子和可以用统计模型处理的复杂句子。 对复杂文章采用统计分词后,两者的结果最终都会变得模糊。 统计建模的方法有很多,当然这里推荐的是文章中介绍的。 该模块将输入作为 ngram 语言模型。 统计分词算法的优化过程是引入标签数据来改变ngram中token之间的分布。 这里推荐使用直接更改的方法。 分词后的坏例也可以恢复为标记数据。

在该系统下,很好地解决了分词过程中的一致性、模糊性处理、新词、可持续改进、可扩展性、性能等因素。

分词是自然语言处理的最底层。 百度自然语言处理在中文分词方面做了大量工作。