问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

自然语言处理和文本数据建模中的马尔可夫链

创作时间:
作者:
@小白创作中心

自然语言处理和文本数据建模中的马尔可夫链

引用
CSDN
1.
https://blog.csdn.net/u013832582/article/details/144419345

目录
1、前言
2.背景介绍
1.1马尔可夫链
1.2.语言模型
1.3伯克利餐厅项目
1.4.使用 KenLM 训练和测试语言模型
3.研究成果
1.Tri-gram 模型
2.KenLM
参考文章

1、前言

最近,随机过程马老师想让我们锻炼一下答辩能力,需要三人一个小组(顺着学号排下来),准备很正式的答辩,十五分钟答辩,答:10min,辩:5min,我在搜索资料看到了俄语《Марковские цепи в обработке естественного языка и моделировании текстовых данных》的这篇文章。

本人之前也对于chatgpt有一点点了解,果断的下手就做了这个课题。那么俄语的这篇文章是对于马尔可夫链的定义到模型,个人读了好几遍认为这篇文章对于文本数据建模这一个部分处理的不是很好,单单只是用了马尔可夫链模型,让我阅读的时候也很是懵逼,没有展现出马尔可夫链这个知识的具体应用,只是讲了在什么地方领域应用,经此而已。那么本文针对马尔可夫链对于自然语言处理(Natural Language Processing,NLP)还有文本数据建模进行更加深入的探究。补充文本数据建模的相关内容。

(整点废话)近年来,得益于深度学习和大规模数据集的广泛应用,语言模型的性能得到了显著提升。而 ChatGPT 正是站在这一进化浪潮的前沿,为我们展现了语言模型的惊人潜力。.

2.背景介绍

1.1马尔可夫链

或许一些朋友还对于chatgpt还很陌生,但是它的出现确确实实的改变了,我们对于搜索引擎的使用,现在无论搜索栏搜什么都有ai整理回答。它不仅仅影响了某个特定领域,而是横跨了机器翻译、图像处理、问答系统、推荐算法以及搜索引擎等多个领域。

那么我们不得不溯本求源,回顾其发展基础——马尔可夫链

1906年,杰出的俄国数学家安德烈·马尔可夫提出了这一理论,(他本人也是在研究语言的过程中提出了马尔可夫假设)它描述了状态空间中通过随机转移实现状态变化的过程。


图1 马尔可夫

马尔可夫链是满足马尔可夫性质的随机变量序列X1,X2,X3, ...,即给出当前状态,将来状态和过去状态是相互独立的。从形式上看,

如果两边的条件分布有定义(即如)

那么我将会根据它的两个概念从 state (状态)和 transition(转换)的概念开始。(由于是从英文翻译过来的,为阅读文章的时候,每一个文章对于transition的翻译都不相同,给我造成了一定的困扰,大家阅读中文文章记得仔细分辨)

马尔可夫链中的状态是系统在给定时间段内的某种配置。例如,如果我们要对一个人在城市中的移动进行建模,那么状态可以由他的当前位置来确定。另一方面,过渡表示状态随时间变化的过程。在我们的示例中,过渡可以是一个人从一个区域移动到另一个区域。

马尔可夫链可以分为不同类型的状态和转换。一种选择是将链分为具有吸收和非吸收状态的链。在具有吸收状态的电路中,存在无法离开的状态。这对于对长期状态进行建模非常有用,例如静止状态或实验的最终结果。另一方面,非吸收性状态允许电路永远在状态之间移动并且永远不会停止。

马尔可夫链的另一个重要特征是它们的均匀性或不均匀性。同次链具有在状态之间转换的固定概率,并且这些概率不会随时间而变化。另一方面,非均匀链具有可变的转换概率,这些概率会随着时间或其他因素而变化。

瞬态概率矩阵是表示马尔可夫链的主要工具。这些是方形矩阵,其中的元素决定了从一种状态转换到另一种状态的概率。矩阵中的每一行都表示一个州,每列表示您可以转到的一个状态。每行中元素的总和应等于 1,这反映了保留概率的事实。

图3 瞬态概率矩阵

使用瞬态概率矩阵,我们可以建模和分析马尔可夫链的各种统计特性,例如遍历状态或达到某些状态的概率。(这里写下去有多好多好多,还有瞬态演变没写)

简单介绍到这里,马尔可夫的没讲到的东西还有很多,这里仅仅作为介绍。这里仅作抛砖引玉。

从语言结构建模到文本统计分析,马尔可夫链允许您创建高效、准确的模型来解决复杂问题。

1.2.语言模型

在自然语言处理中使用马尔可夫链的主要优势之一是它们能够对文本结构进行建模。与依赖于语法或规则的传统方法不同,马尔可夫链会自动提取有关单词及其序列之间关系的统计信息。这允许您构建灵活的自适应模型,这些模型可以根据现有上下文准确预测下一个单词或短语。

有时候即使把顺序捣乱,我们还是能看懂这句话在说什么,但有时候不行,例如:

研表究明,汉字的序顺并不定一会影阅响读。

比如当看你完这句话后,才发这现里的字全是都乱的。

N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。

N-gram正是基于这样的想法,它的第一个特点是某个词的出现依赖于其他若干个词,第二个特点是我们获得的信息越多,预测越准确。我想说,我们每个人的大脑中都有一个N-gram模型,而且是在不断完善和训练的。我们的见识与经历,都在丰富着我们的阅历,增强着我们的联想能力。

图4 语言模型

N-gram本身也指一个由N个单词组成的集合,各单词具有先后顺序,且不要求单词之间互不相同。

常用的有 Bi-gram (N = 2 N=2N=2) 和 Tri-gram (N = 3 N=3N=3),一般已经够用了。

例如在上面这句话里,我可以分解的 Bi-gram 和 Tri-gram :

Bi-gram : {I, love}, {love, deep}, {love, deep}, {deep, learning}

Tri-gram : {I, love, deep}, {love, deep, learning}

即从数学上讲,语言模型是一个概率分布模型,目标是评估语言中任意一个字符串的生成概率p(S),其中S=(w1,w2,w3,…,wn),它可以表示一个短语、句子、段落或文档,wi取自词表集合W。利用条件概率及链式法则我们可以将p(S)表示为:

即一个句子生成可以理解为由m个单词共同出现组成,而这些单词又可以看成是词序列中的一员,第i个单词的出现依赖于它的前i-1个词出现的概率。

是不是很简单?是的,不过这个衡量方法有两个缺陷:

1.参数量巨大,难以计算。

2.每一部分的概率怎么求得?

为了解决第一个问题,我们引入马尔科夫假设(Markov Assumption):一个词的出现仅与它之前的若干个词有关。

(马尔科夫假设:马尔科夫假设是一个关于随机过程的基本假设,它表明一个随机事件的未来状态只依赖于当前的状态,而不依赖于过去的状态)

n-gram模型的直觉是,我们可以通过最后几个单词来近似历史,而不是计算给定整个历史的单词的概率。

我们如何估计这些二元组或n元组的概率?估计概率的直观方法称为(Maximum Likelihood Estimation,MLE)最大似然估计简称MLE。根据大数定理,当样本数量足够大时,我们可以近似地用频率来代替概率,在这里我们就是要求我们的语料库要比较大,然后概率用数频数的方法来计算(这里是不是应该有一个公式?)

具体地,以Bi-gram为例,我们有这样一个由三句话组成的语料库:

下面是这个语料库中一些二元组概率的计算结果

对于MLE n-gram参数估计的一般情况:

通过将观察到的特定序列的频率除以观察到的前缀的频率来估计n-gram概率。

这个比率被称为相对频率。我们上面说过,使用相对相对频率频率作为估计概率的一种方式是最大似然估计或MLE的一个例子。

1.3伯克利餐厅项目

让我们从一个真实的但很小的语料库中选取一些例子,这个语料库来自现已不复存在的伯克利餐厅项目,这是一个来自上个世纪的对话系统,它回答了关于加州伯克利餐厅数据库的问题(Jurafsky et al,1994)。下面是一些示例用户查询(文本规范化,通过小写和标点符号条纹)(网站上有9332个句子的示例):(补充:在1947年由国际计算机科学研究所美国加州大学伯克利分校该项目的主要目标是开发一个中等词汇量、说话者独立的自发连续语音理解系统,即伯克利餐厅项目(Berkeley Restaurant Project, BeRP)。具体来说,BeRP旨在作为一个知识顾问,帮助用户查询加利福尼亚州伯克利市的餐厅信息。用户可以通过自然语言提问,系统会根据用户的需求(如费用、食物类型和位置)查询数据库并提供建议。)

图5

图5显示了文本规范化的伯克利餐厅项目句子中的二元语法的部分二元语法计数,注意,大多数值为零,事实上,我们选择的样本词是相互关联的;从随机的八个词中选择的矩阵会更稀疏。


图6单元词组计数集合

将图5中的每个单元格除以其单元词组,可以得到图7二元组概率

图7显示了归一化(标准化)后的二元组概率

以下是一元概率

P(i|) = 0.25 P(english|want) = 0.0011 P(food|english) = 0.5

P(|food) = 0.68

现在,我们可以通过将适当的二元概率相乘来计算“我想要英国食物”或“我想要中国食物”等句子的概率(也就是二元概率),如下所示:

P( i want english food )

= P(i|)P(want|i)P(english|want)

=P(food|english)P(|food)

= 0.25×0.33×0.0011×0.5×0.68

= 0.000031

好累啊,到这里我们会发现,概率随着相乘越来越小,那么足够多的n-gram相乘会导致数值下溢,(咦~数值下溢,越来越小不好吗?)那么对数来了,相乘不行那就相加好了,所以我们通过相加来组合,只需通过对对数概率取指数即可将其转换回概率:

1.4.使用 KenLM 训练和测试语言模型

接下来我们来到了kenlm

做自然语言处理NLP项目,构建语言模型是第一步工作,也是万物的基石。现在流行的用来训练语言模型的工具无非

SRILM

KenLM

berkeleylm

等几个选项。

其中,属

KenLM

性能最好,它是英国大神 Kenneth Heafield 用C++写的,训练销量十分优异,在支持大数据量运算领域也表现出色。

使用 KenLM 基于语料库(如《三国演义》)训练语言模型,并使用分数评估句子在模型中的合理性。这种方法可应用于自然语言处理中的语言生成、纠错和句法分析等任务。

3.研究成果

已经知道他的原理了,接下来我们来到研究成果

1.Tri-gram 模型

我用chatgpt生成了Tri-gram 模型,基于 Python 实现。

可以看到多次生成的文本各有不同,我用的文本是

2.KenLM

使用 KenLM 训练和测试语言模型成果

可以看到,第一句"滚滚长江东逝水"是得分最高的句子,也是被语言模型认为是最合理的一句。帮我整理总结这一段的内容

ps:由于语言模型的合理性使用概率的值表示,所以这个值一定是小于1的,取完log后则必然小于0,所以看到结果是负数是正常的,直接比较其大小即可。

ok,这就是全文的内容啦!感谢你看到这里,总结和展望我就不来了,大家也都知道现在大数据模型带给我们多少惊喜,我们站在前人的肩膀上,享受着时代的便利。

最后升华一下

The future is independent of the past given the present

未来独立于过去,只基于当下。

参考文章

Марковские цепи в обработке естественного языка и моделировании текстовых данных / ХабрАвтор статьи: Артем Михайлов В последние десятилетия марковские цепи стали широко используемым инструментом в обработке естественного языка и моделировании текстовых данных. Они представляют собой...

https://habr.com/ru/companies/otus/articles/746412/

语言模型(一)—— 统计语言模型n-gram语言模型-CSDN博客文章浏览阅读6.1k次,点赞14次,收藏48次。从传统的语言模型到统计语言模型,深入了解n-gram语言模型的原理、计算方法、优缺点等。_统计语言模型

https://blog.csdn.net/rongsenmeng2835/article/details/108565323

自然语言处理NLP中的N-gram模型_.gelnx nlp-CSDN博客

https://blog.csdn.net/songbinxu/article/details/80209197

Марковские цепи в обработке естественного языка и моделировании текстовых данных / ХабрАвтор статьи: Артем Михайлов В последние десятилетия марковские цепи стали широко используемым инструментом в обработке естественного языка и моделировании текстовых данных. Они представляют собой...

https://habr.com/ru/companies/otus/articles/746412/

Speech and Language Processing. Daniel Jurafsky & James H. Martin. Copyright © 2024. All rights reserved. Draft of August 20, 2024.

实现强大的语言模型:马尔可夫链与语言模型的结合1.背景介绍 自然语言处理(NLP)是人工智能领域的一个重要分支,其中语言 - 掘金

https://juejin.cn/post/7317703149089947685

预测的艺术:深入研究马尔科夫链 / Habr --- Искусство прогнозирования: погружение в Марковские цепи / Хабр

https://habr.com/ru/companies/otus/articles/732424/

强化学习笔记:马尔科夫链介绍及基于Python的蒙特卡洛仿真_mrf python-CSDN博客

https://blog.csdn.net/chenxy_bwave/article/details/122378933

KenLM, NLP语言模型神器手把手 入门教学

https://www.zhihu.com/tardis/zm/art/399494766?source_id=1005

python如何读取txt里面的数据_python读取txt数据-CSDN博客

https://blog.csdn.net/ggj0727/article/details/120605935

关于kenlm工具训练统计语言模型_kenlm读取arpa模型-CSDN博客

https://blog.csdn.net/HHTNAN/article/details/84231733

Speech and Language Processing. Daniel Jurafsky & James H. Martin. Copyright © 2024. All rights reserved. Draft of August 20, 2024.

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号