`

一种利用ngram模型来消除歧义的中文分词方法

阅读更多

这里的歧义是指:同样的一句话,可能有两种或者更多的切分方法,这些切分结果,有的正确,有的不正确。

消除歧义的目的就是从切分结果中挑选切分正确的。

假设我们要切分句子:结婚的和尚未结婚的,使用逆向最大匹配正向最大匹配算法的结果如下:

1
2
逆向最大匹配:[结婚, 的, 和, 尚未, 结婚, 的]
正向最大匹配:[结婚, 的, 和尚, 未结, 婚, 的]

再比如,这几块地面积还真不小

1
2
逆向最大匹配:[这, 几块, 地, 面积, 还真, 不小]
正向最大匹配:[这, 几块, 地面, 积, 还真, 不小]

这里就出现了歧义现象,这种歧义现象称为交集型歧义。

交集型歧义的特点是,其中的一个字既可以和前面的字结合成词,也可以和后面的字结合成词,如上面所说的和尚未"中就是这样的字,既可以和前面的字结合成“和尚”也可以和后面的字结合成“尚未”。还有“地面积”中的,既可以是地面,也可以是面积

那么我们该选择哪一个分词结果呢?

我们可以利用ngram模型来消除歧义,我们看第一个例子的分词过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
初始化bigram
bigram初始化完毕,bigram数据条数:1519443
 
利用bigram为逆向最大匹配算法的分词结果进行评分:
 
二元模型 结婚:的 获得分值:16.970562
二元模型 和:尚未 获得分值:2.0
二元模型 尚未:结婚 获得分值:1.4142135
二元模型 结婚:的 获得分值:16.970562
 
逆向最大匹配:[结婚, 的, 和, 尚未, 结婚, 的] : ngram分值=37.35534
 
利用bigram为正向最大匹配算法的分词结果进行评分:
 
二元模型 结婚:的 获得分值:16.970562
二元模型 的:和尚 获得分值:3.0
 
正向最大匹配:[结婚, 的, 和尚, 未结, 婚, 的] : ngram分值=19.970562
 
最大分值:37.35534, 消歧结果:[结婚, 的, 和, 尚未, 结婚, 的]

接着看第二个例子:

1
2
3
4
5
6
7
8
9
10
11
利用bigram为逆向最大匹配算法的分词结果进行评分:
 
二元模型 地:面积 获得分值:1.7320508
 
逆向最大匹配:[这, 几块, 地, 面积, 还真, 不小] : ngram分值=1.7320508
 
利用bigram为正向最大匹配算法的分词结果进行评分:
 
正向最大匹配:[这, 几块, 地面, 积, 还真, 不小] : ngram分值=0.0
 
最大分值:1.7320508, 消歧结果:[这, 几块, 地, 面积, 还真, 不小]

这里要解释的是,ngram中的n>1,我们这里取2(bi),我们看到bigram中数据的条数有1519443,bigram需要从人工标注的语料库中提取,提取方法参考word分词项目,bigram中的数据格式如下:

1
2
3
4
5
6
结婚:登记 91
结婚:的 288
地:面积 3
和:尚未 4
尚未:结婚 2
的:和尚 9

表示的含义是在人工标注的语料库中,结婚这个词后面跟着登记这个词的出现次数是91次,结婚这个词后面跟着这个词的出现次数是288次。

如果ngram中的n为3,则数据格式如下:

1
2
3
4
结婚:的:事情 3
结婚:的:人 4
结婚:的:信念 2
结婚:的:决定 13

表示的含义和bigram一致。

通过分析bigram和trigram,我们知道,在ngram中,n越大,消歧的效果就越好,但是数据也越大,耗费的内存就更多了。

利用ngram模型来消除歧义,依赖人工标注的语料库,利用了统计学的大数定律,这种方法的缺点在于无法处理少见的语言现象,以及无法处理样本覆盖不到的情况。

 

 

 

 

1
2
分享到:
评论

相关推荐

    一种改进的中文分词歧义消除算法研究

    ### 一种改进的中文分词歧义消除算法研究 #### 关键知识点概述 本文主要讨论了一种改进的中文分词歧义消除算法的研究。中文分词是自然语言处理(NLP)的重要组成部分,对于后续的语义分析、机器翻译等任务至关重要。...

    ngram模型分词与统计算法.zip_NGram 算法_ngram 分词_ngram模型分词与统计算法_n元模型_按n-gram

    N-Gram(有时也称为N元模型)是自然语言处理中一个非常重要的概念,通常在NLP中,人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理。另外一方面,N-Gram的另外一个作用是用来评估两个字符串之间...

    (源码)基于Ngram模型的中文文本纠错系统.zip

    # 基于Ngram模型的中文文本纠错系统 ## 项目简介 该项目通过Ngram模型与Perplexity(PPL)指标实现中文文本的简单纠错。主要利用Ngram语言模型预测文本中字符替换后的概率提升,从而进行文本纠错。项目适用于学习...

    Ngram分词程序

    **Ngram分词程序**是一种基于N-Gram模型的文本处理工具,主要应用于自然语言处理领域,用于将连续的汉字序列切分成有意义的词汇单元。N-Gram模型是指在文本中考虑一个单词出现的概率时,不仅考虑当前单词,还考虑其...

    分词学习(3),基于ngram语言模型的n元分词-附件资源

    分词学习(3),基于ngram语言模型的n元分词-附件资源

    基于Ngram双向匹配最大中文分词

    基于Ngram双向匹配最大中文分词 包含data:停用词语料,标准切分语料,测试集,训练集 PrePostNgram1.py为双向最大匹配程序 Evaluate.py为评估程序结果 word内容为程序说明以及原理

    word:Java分布式中文分词组件 - word分词

    word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过...

    基于MP最大概率的Ngram汉语切分(北邮计算机语言学基础)

    Ngram是一种统计语言模型,它基于前n个词来预测下一个词的概率。在中文分词中,通常使用的是二元(bigram)或三元(trigram)模型,因为这些模型能够捕捉到词语间的上下文关系。例如,二元模型会考虑当前词与其前一...

    中文分词工具word-1.0,Java实现的中文分词组件多种基于词典的分词算法

    word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。 同时提供了Lucene...

    NGram:NGram 模型平滑新词

    NGramNGram Model smooth new word该项目实现了NGram模型,但主要实现2元和3元语法模型,主要涉及的技术包括NGram生成、起始字符统计、平滑技术,此外还包括一些应用,比如新词发现。目前该项目还有待完善。

    基于ngram+softmax函数的传统统计方法源码+biLSTM和CNN深度学习方法对数据集进行文本分类.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程...基于ngram+softmax函数的传统统计方法源码+biLSTM和CNN深度学习方法对数据集进行文本分类.zip

    自然语言处理实验报告.doc/中文分词/宋词生成/n-gram模型/全部java源代码

    总结来说,这个实验报告深入探讨了中文分词、n-gram模型在宋词生成中的应用,提供了一整套Java实现的解决方案,包含了从数据收集、模型训练到系统设计的完整流程,对于理解和实践自然语言处理技术具有很高的参考价值...

    ngram-language-model:HMM Ngram 语言模型的实现

    ngram-语言模型一个 HMM Ngram 语言模型在 Python 中的实现。 目前实现了基本的 NGram 分析,并提供了一个接口来从你最喜欢的语料库中创建采样器。 使用 run_sampling_from_corpus.py 在文本文件中的语料库上创建...

    基于ngram和softmax函数方法+biLSTM和CNN深度学习方法对kaggle数据集进行文本分类.zip

    本资源是一个基于ngram和softmax函数方法结合biLSTM和CNN深度学习方法的文本分类项目,旨在对Kaggle数据集进行深入分析和分类。项目中包含详细的代码实现和注释,帮助用户理解并掌握这些高级文本分类技术。该项目...

    SRILM与ngram-count相关的主要类的类图

    类图还可能展示了类之间的继承关系、关联关系以及方法调用,如`NGramModel`可能从抽象类`LanguageModel`继承,`CountTable`可能包含`Vocabulary`实例,而`ngram-count`函数可能通过`NGramModel`的API来训练模型。...

    N-gram语言模型

    N-gram语言模型是一种在自然语言处理中广泛应用的概率统计模型,它通过分析文本数据来预测一个序列中的下一个词。在本项目中,我们将探讨如何使用Python实现N-gram模型,并特别关注Kneser-Ney平滑算法,这是一种改进...

    维特比算法分词原理

    ansj 分词原理 ngram+维特比最优路径 能够实现消除歧义

    stopword:引用ysc备分

    ###Java分布式中文分词组件 - word分词####word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名...

Global site tag (gtag.js) - Google Analytics