数学与自然语言处理——统计语言模型

news/2024/12/22 19:58:17/

什么是自然语言处理 – NLP

        每种动物都有自己的语言,机器也是!

        自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。人类通过语言来交流,狗通过汪汪叫来交流。机器也有自己的交流方式,那就是数字信息。

        自然语言就是大家平时在生活中常用的表达方式,大家平时说的“讲人话”就是这个意思。

        自然语言:我背有点驼

        非自然语言:我的背呈弯曲状

        而自然语言从它产生开始,逐渐演变成一种上下文相关的信息表达和传递的方式,因此让计算机处理自然语言,一个基本的问题就是为自然语言这种上下文相关的特性建立数学模型,即统计语言模型(Statistical Language Model)。

 如何使用统计语言模型来描述语言规律

        在最初统计模型语言产生的初衷是为了解决语音识别问题。假定S表示某一个有意义的句子,由一连串特定顺序排列的词 w_{1},w_{2},...,w_{n} 组成,其中n是句子的长度。

        P(S)=P(w_{1},w_{2},...,w_{n})

        利用条件概率的公式,我们可以得到

P(S)=P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{1},w_{2})...P(w_{n}|w_{1},...,w_{n-1})

        从计算上来看,词的概率计算变得越来越麻烦。如果我们假设,任意一个词w_{i}出现的概率只与它前面的词w_{i-1}有关,那么

 P(S)=P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{2})...P(w_{n}|w_{n-1})

其对应的统计语言模型为二元模型(Bigram Model)。我们知道P(S)的计算方式之后,接下来如何估计条件概率\frac{}{}P(w_{i}|w_{i-1}) 呢,根据定义,我们可以得到 

P(w_{i}|w_{i-1})=\frac{P(w_{i},w_{i-1})}{P(w_{i-1})}\approx \frac{f(w_{i},w_{i-1})}{f(w_{i-1})}\approx \frac{\sharp (w_{i},w_{i-1})}{\sharp (w_{i-1})}

        假设文本中的每个词w_{i}和前面N-1个词有关,而与更前面的词无关,因此

P(w_{n}|w_{1},...,w_{n-1})=P(w_{i}|w_{i-N+1},w_{i-N+2},...,w_{i-1})

这种假设被称为N-1阶马尔可夫假设,对应的语言模型称为N元模型。当N=2时,即为二元模型;N=1时,即为一元模型,是一个上下文无关的模型。实际应用中最常用的为N=3的三元模型。

统计语言模型的工程应用

        使用语言模型需要知道模型中所有的条件概率,即模型的参数,而得到这些参数的过程称之为模型的训练。对于二元模型来说,我们至于要知道两个语料中出现的次数,之所以可以用采样数据进行预测,是由于大数定理的支持。然而,在估计语言模型的概率时,这个方法时不可行的(数量很小的时候,随机性很大)。那么,我们如何正确地训练一个语言模型呢?

        一个办法是增加数据量,即便如此,仍会遇到零概率或统计量不足的问题。因此,如果用直接的比值计算概率,大部分的条件概率仍为零,这种模型我们称作“不平滑”。

        另一个办法是“古德-图灵估计(Good-Turing Estimate)”,即对于没有看见的事件,我们不能认为它发生的概率为0,因此我们从概率的总量中,分配一个很小的比例给这些没有看见的事件。这样看见的事件的概率总和就要小于1了,所以我们需要将所有看见的事件概率调小一点,至于小多少,需要根据“越是不可信的统计折扣越多”的方法进行。


http://www.ppmy.cn/news/1506371.html

相关文章

JavaEE 图书管理系统

基于阿里巴巴的fastjson框架搭建的JavaEE版本的图书管理系统,项目架构如下: fastjson包的阿里云下载镜像如下: Central Repository: com/alibaba/fastjson2/fastjson2/2.0.8 运行效果: Bean Book.java package Bean;public c…

MLP:全连接神经网络的并行执行

目录 MLP:全连接神经网络的并行执行 假设 代码解释 注意事项 MLP:全连接神经网络的并行执行 为了继续解释这段代码,我们需要做一些假设和补充,因为原始代码片段中DummyModel、Shard和mx.array的具体实现没有给出。不过,基于常见的编程模式和深度学习框架的惯例,我们…

电话营销机器人的优势

在人工智能的新趋势下,企业开始放弃传统外呼系统,转而使用电话销售机器人,那么使用机器人比坐席手动外呼好吗,真的可以代替人工坐席外呼吗,效率真的高吗? 1、 真人式语音 电话销售人员可以将自定义的话术…

React前端面试每日一试 6.什么是React的Context API?如何使用它?

React的Context API是一种用于共享组件树中全局数据的方法,而无需通过props逐层传递。它对于需要在应用中许多不同层次上访问数据的情况非常有用,例如当前的主题、用户信息或首选语言。 Context API的核心概念 1.创建Context:使用React.cre…

oracle创建dblink使得数据库A能够访问数据库B表LMEAS_MFG_FM的数据

1、给数据库A普通用户CMRONLINE相应的权限,在sys用户下执行以下语句 GRANT CREATE DATABASE LINK TO CMRONLINE; GRANT DROP PUBLIC DATABASE LINK TO CMRONLINE; GRANT CREATE PUBLIC DATABASE LINK TO CMRONLINE; 2、在数据库A用户 CMRONLINE下执行创建语句&…

目标跟踪那些事

目标跟踪那些事 跟踪与检测的区别 目标跟踪和目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。 目标检测(object Detection):是指在图像或视频帧中识别并定位一个或多个感兴趣的目标对象的过程 。 目标跟踪(object Tracking)&…

常用的图像增强操作

我们将介绍如何用PIL库实现一些简单的图像增强方法。 [!NOTE] 初始化配置 import numpy as np from PIL import Image, ImageOps, ImageEnhance import warningswarnings.filterwarnings(ignore) IMAGE_SIZE 640[!important] 辅助函数 主要用于控制增强幅度 def int_param…

数据库之SQL注入

SQL注入(SQL Injection)是一种代码注入攻击,攻击者通过将恶意SQL代码插入到应用程序的输入参数中,从而操控数据库执行未经授权的操作。这种攻击通常发生在web应用程序上,特别是当应用程序没有正确过滤用户输入时。 一…