首页 > 编程知识 正文

讲讲语言模型和中文分词

时间:2023-05-05 14:04:31 阅读:180227 作者:2531

一.语言模式

任何进行自然语言处理的工具都是基于计算机程序实现的,当计算机承担数学计算的任务时,自然语言与数学的联系就是语言模型,只有理解语言模型才能理解各种工具的实现原理。 在本节中,将深入挖掘语言模型的世界

请尊重原件,转载请注明源网站www.shareditor.com及原件的链接地址

数学模型数学模型是指运用数理逻辑法和数学语言建立的科学模型或工程模型。 说白了,就是用数学方法说明事实。 举个简单的例子吧。 拿着铅笔,又捡了一枝,一共是两根。 数学模型是1(1=2)。 举个复杂的例子吧。 你每周可以在路上捡起三支铅笔。 数学模型是p(x )=3/7。 这个数学模型有助于预测明天捡起铅笔的可能性。 当然,说明事实的数学模型不是唯一的。 例如,每周拾取三支铅笔的数学模型可能是p(Qt=SJ|Qt-1=si,qt-2=sk,)、s=0,1,即两种状态的马尔可夫模型。 也就是说,明天是否捡铅笔取决于前几天是否捡铅笔

数学建模数学建模是指通过计算得到的结果说明实际问题,经过实际检验,建立数学模型的全过程。

语言模型语言模型是基于语言的客观事实而进行的语言抽象数学建模。 简言之,就是找到解释自然语言事实的数学模型。

业界公认的语言模型业界目前比较认可且有效的语言模型是n元语法模型(n-gram model ),它本质上是马尔可夫模型,简而言之,下一个词的出现与最近的n个词有关) 详细地说:

其中,当n=1时,最新的单词只与自己有关。 也就是说,它是独立的,与上一个单词无关。 这叫做一元语法

这里的n=2时,最新的单词与之前的单词有关。 例如,如果前面的单词是“我”,则最新的单词是“是”的概率变高。 这被称为二元语法,也称为一阶马尔可夫链

依次类推,工程上n=3使用最多。 这是因为n越大约束信息越多,n越小可靠性越高

n元语法模型实际上是概率模型,单词出现的概率是多少,或者句子长的概率是多少。

这回到了上一篇文章中提到的自然语言处理研究的两大方向。 规则库,统计库。 n元语法模型显然是基于统计的方向。

概率是如何在统计上基于统计的呢,就是概率是如何推定的。 通常使用最大似然估计。 如何理解“最大似然估计”? 最大似然是指最相似的事情。 那么,和谁相似,和历史相似,历史是什么样的呢? 因为在10个词中出现了2次,2/10=1/5,所以经常听到的“最大似然估计”是以历史上出现的频率来估计概率的方法。 这么说你明白了吧?

请尊重原件,转载请注明源网站www.shareditor.com及原件的链接地址

语言模型存在哪些困难1 .基于千变万化的自然语言的0概率问题统计的自然语言处理需要在大量语料库的基础上进行,而自然语言千变万化,可以理解所有词汇的笛卡儿积,数量之多超乎想象,在有限的语料库中囊括语言现象例如,我的博客在我写之前概率是0。 因为我是原创的。 那么,这0概率的问题怎么解决呢? 这是业界不断研究的数据平滑技术,通过各种数学方法使一言一行的概率大于0。 不列举具体的方法。 全都在玩数学。 比较简单。 只是通过增加或减少个数、进行插补使其平滑,有效地应用于不同特征的数据。 流畅的方法确实有效,通过各种自然语言工具实现,直接使用就可以了。

2 .特定领域特定词概率大的问题,在任何领域的词汇量都比平时多。 例如,在计算机领域经常出现“性能”和“程序”等词汇。 这个解决方案可以通过缓存刚出现的词汇,提高后来出现的概率来解决。 当然,这有很多技巧。 我们不认为出现的所有词后面的概率都很高,而是考虑这些词出现的频率和规律(例如词间距离)进行预测。

3 .单一语言模型总有缺点。 还是因为语料库的不足,我们要融合多个语料库。 但是,由于不同语料库之间的差异,我们在单一语言模型中往往不准确。 因此,有一种方法可以缓解这种不准确性。 那就是混合多种语言模型进行计算。 这其实是折中的,这个方法low有效。

另一种方法是用多种语言模型分别计算,最后选择熵最大的。 这其实也是一个折中,就是在哪个地方启用哪个模型。

神经网络语言模型自21世纪以来,在统计学习领域什么都与深度学习不相上下。 毕竟计算机的计算能力提高了很多。 再怎么说

深都不怕。神经网络语言模型可以看做是一种特殊的模型平滑方式,本质上还是在计算概率,只不过通过深层的学习来得到更正确的概率。

 

语言模型的应用

这几乎就是自然语言处理的应用了,有:中文分词、机器翻译、拼写纠错、语音识别、音子转换、自动文摘、问答系统、OCR等


二、浅谈中文分词


中文是世界语言界的一朵奇葩,它天生把词连在一起,让计算机望而却步,一句#他说的确实在理#让计算机在#的确#、#实在#、#确实#里面挣扎,但是统计自然语言处理却让计算机有了智能 


中文分词是怎么走到今天的

话说上个世纪,中文自动分词还处于初级阶段,每句话都要到汉语词表中查找,有没有这个词?有没有这个词?所以研究集中在:怎么查找最快、最全、最准、最狠......,所以就出现了正向最大匹配法、逆向最大匹配法、双向扫描法、助词遍历法......,用新世纪比较流行的一个词来形容就是:你太low了!

中文自动分词最难的两个问题:1)歧义消除;2)未登陆词识别。说句公道话,没有上个世纪那么low的奠定基础,也就没有这个世纪研究重点提升到这两个高级的问题

ps:未登录词就是新词,词表里没有的词

本世纪计算机软硬件发展迅猛,计算量存储量都不再是问题,因此基于统计学习的自动分词技术成为主流,所以就出现了各种新分词方法,也更适用于新世纪文本特点

 

从n元语法模型开始说起

上节讲到了n元语法模型,在前n-1个词出现的条件下,下一个词出现的概率是有统计规律的,这个规律为中文自动分词提供了统计学基础,所以出现了这么几种统计分词方法:N-最短路径分词法、基于n元语法模型的分词法

N-最短路径分词法其实就是一元语法模型,每个词成为一元,独立存在,出现的概率可以基于大量语料统计得出,比如“确实”这个词出现概率的0.001(当然这是假设,别当真),我们把一句话基于词表的各种切词结果都列出来,因为字字组合可能有很多种,所以有多个候选结果,这时我们利用每个词出现的概率相乘起来,得到的最终结果,谁最大谁就最有可能是正确的,这就是N-最短路径分词法。

这里的N的意思是说我们计算概率的时候最多只考虑前N个词,因为一个句子可能很长很长,词离得远,相关性就没有那么强了

这里的最短路径其实是传统最短路径的一种延伸,由加权延伸到了概率乘积

而基于n元语法模型的分词法就是在N-最短路径分词法基础上把一元模型扩展成n元模型,也就是统计出的概率不再是一个词的概率,而是基于前面n个词的条件概率

 

人家基于词,我来基于字

由字构词的分词方法出现可以说是一项突破,发明者也因此得到了各项第一和很多奖项,那么这个著名的分词法是怎么做的呢?

每个字在词语中都有一个构词位置:词首、词中、词尾、单独构词。根据一个字属于不同的构词位置,我们设计出来一系列特征,比如:前一个词、前两个词、前面词长度、前面词词首、前面词词尾、前面词词尾加上当前的字组成的词……

我们基于大量语料库,利用平均感知机分类器对上面特征做打分,并训练权重系数,这样得出的模型就可以用来分词了,句子右边多出来一个字,用模型计算这些特征的加权得分,得分最高的就是正确的分词方法

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

 

分词方法纵有千万种,一定有适合你的那一个

分词方法很多,效果上一定是有区别的,基于n元语法模型的方法的优势在于词表里已有的词的分词效果,基于字构词的方法的优势在于未登陆词的识别,因此各有千秋,你适合哪个就用哪个。

 

异性相吸,优势互补

既然两种分词各有优缺点,那么就把他们结合起来吧,来个插值法折中一下,用过的人都说好

 

流行分词工具都是用的什么分词方法 jieba中文分词

官方描述:

基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)采用了动态规划查找最大概率路径, 找出基于词频的最大切分 组合对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

前两句话是说它是基于词表的分词,最后一句是说它也用了由字构词,所以它结合了两种分词方法

 

ik分词器

基于词表的最短路径切词

 

ltp云平台分词

主要基于机器学习框架并部分结合词表的方法

 

其他分词工具判断方法类似,网上对各种分词工具好坏的判断多数是功能上比较,个人建议通过原理来判断,如果结合了基于词表和由字构词并且充分利用统计学习的方法,这样的分词工具才是最好的


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。