其他分享
首页 > 其他分享> > NLP录播课笔记一

NLP录播课笔记一

作者:互联网

文章目录

一、NLP定义及歧义性(视频3)

NLP = NLU + NLG
Natural Language Understanding:通过文本理解其意思
Natural Language Generation:通过意思meaning生成文本

为什么NLP 比CV(computer vision)更难?
因为计算机视觉,图像所见即所得,而人看文本是看他背后所蕴含的意思。
一个含义meaning能有多种表达的方式:Multiple ways to express
一词多义:Ambiguity

在这里插入图片描述
如何解决歧义呢?
举例:Interest这个词,有三种意思
如果单独看这个词没有上下文,只能靠猜,或者统计,比如说通过大量文本统计,15%是利息的意思,80%是兴趣的意思
在这里插入图片描述
如果interest这个词知道是出现在IBM的文件中,结合语境,大概率知道interest是利益的意思
在这里插入图片描述
一个词结合上线文(context)后,或者说我们把一个词放到某个特定领域的文档数据中后,就可更新对这个词的meaning的认知

二、机器翻译case study(视频4-5)

2.1 如何做一个简单的机器翻译呢?

给如下12对,两种语言的配对。 a和b是两种语言,意思相同。最简单的方式就是通过统计,找到每个词在另一种语言句子中对应的位置,统计a语言里的词在b语言中哪里出现。渐渐形成配对
在这里插入图片描述
但这种通过统计得到的翻译系统存在很多缺点:
1.运行速度慢
2.语义歧义解决不了
3.上下文不连贯
4.语法不对
5.需要大量的人工设计规则进行统计

改进思路,解决语法问题↓
在这里插入图片描述

用到LM语言模型就肯定会有排列组合爆炸的缺点,所包含的词越多,要算的条件概率越复杂

2.2

将上面两步:翻译模型+语言模型 合并成一起,用到了decoding algorithm(Viterbi algorithm维特比算法)
维特比算法的核心是动态规划
在这里插入图片描述

在这里插入图片描述
上面计算P概率值的方法分别就是unigram,bigram,trigram模型了,统称n-gram模型

三、NLP的应用场景(视频6)

在这里插入图片描述
医疗场景用的比较多,AI医生。


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

四、NLP关键技术介绍(视频7)

自然语言处理技术四个维度
在这里插入图片描述
Morphology单词层面的技术:分词,POS词性标注,NER命名实体识别 Named entity recognition

Syntax句子结构:句法分析(按照主谓宾),依存分析(Dependency,一个动词指向谁),

Semantic语义分析:机器学习,情感分析

依存分析:
在这里插入图片描述

在这里插入图片描述

五、算法复杂度(视频8-16)

看不懂,对项目没什么帮助,略

六、问答系统介绍(视频17)

在这里插入图片描述
先要有知识库,或者说问答对pair,当用户输入一个问题时,要计算,这个问题跟知识库里的问题的相似度,找出相似度最高的问题,返回其答案
在这里插入图片描述
核心点就是:文本的表示:切词,去除停用词,删除特定字符,转化为向量;以及相似度计算

七、心理学的一些启发(视频18-19)

八、自然语言处理流程pipeline(视频20)

在这里插入图片描述

九、分词(视频21-24)

常用分词工具:在这里插入图片描述

LTP是哈工大的,最常用是jieba
在这里插入图片描述

9.1 介绍了前向最大匹配分词 forward max matching:

首先要有个词典库,里面存了很多词,找到词典库里最长的词的长度n(或者自己定义max-len),然后对要分词的句子从n进行从左到右匹配,看第一个n个字符串是否出现在词典库中,如果没有缩减到n-1个字符串,看是否出现在字典库中,以此类推,直到找到词出现在字典库中后,切词,从切好词的后面一个字符开始,再继续如上步骤

例子:我们经常有意见分歧 ,n取5
我们经常有 x
我们经常 x
我们经 x
我们 ✔

经常有意见 x
经常有意 x
经常有 x
经常 ✔

需要注意的是max—len不一定要设置为词库中最长单词的长度,因为越长,算法复杂度越大,可以适当按照28原则,找到80%词最长的长度
在这里插入图片描述

9.2 后向匹配+双向匹配

9.3 前后双向分词缺点

贪心算法,只能做到局部最优;效率低;歧义,不会考虑语义

十、分词,考虑语言模型(视频23)

考虑语义semantic

思路:通过各种分词方法,假设n种分词方法,得到n个分词结果,每个分词结果传到一个工具中,这个工具能判断或是说返回一个值判断,分词的结果是否符合语义,对符合语义的分词结果打高分。

在这里插入图片描述

这个工具就是language model。(利用条件概率)
计算每个词的概率时可能会遇到超出计算机浮点型范围的情况,因为一个词出现的次数太少导致概率值太小了。
在概率前计上log能解决这一问题
在这里插入图片描述
语言模型的缺点:复杂度非常高。

十一、分词-维特比算法(视频24) 了解即可不必深究

上一章说了寻求最好的分词结果,可以通过分词后,对每个分词结果,用某种工具进行打分,分词和打分是两个步骤,是分开的
效率不高。

维比特将两步合起来。
在这里插入图片描述
对句子分词,给定一个词典(没出现在词典中的词的概率可以分配一个P(其他)=0.00001),里面的词都有计算好的概率,再对这些词的概率取-log,-log(x)越小,其概率越大。

在这里插入图片描述

把分词-log(x)套到如下链条中,这样就会有好几条路径,找到和最小的路径,就是P概率最大的路径。

维特比算法:
定义:
f ( 8 ) f(8) f(8): 从节点1 到 8最短路径的值
f ( 7 ) f(7) f(7): 从节点1 到 7最短路径的值
f ( x ) f(x) f(x): 从节点1 到 x最短路径的值

动态规划:
f(8)的计算有3种方式,因为有三个箭头(路径)通向节点8
f ( 8 ) f(8) f(8) = f ( 5 ) f(5) f(5) + 3 (计算节点1-5的路径的值,再加上节点5-8的值)
f ( 8 ) f(8) f(8) = f ( 6 ) f(6) f(6) + 1.6 (计算节点1-6的路径的值,再加上节点6-8的值)
f ( 8 ) f(8) f(8) = f ( 7 ) f(7) f(7) + 20 (计算节点1-7的路径的值,再加上节点7-8的值)

f(7)的计算只有1种方式:
f ( 7 ) f(7) f(7) = f ( 6 ) f(6) f(6) + 2.3 (计算节点1-5的路径的值,再加上节点5-8的值)

f(6)的计算有3种方式,因为有三个箭头(路径)通向节点6:
f ( 6 ) f(6) f(6) = f ( 5 ) f(5) f(5) + 3
f ( 6 ) f(6) f(6) = f ( 4 ) f(4) f(4) + 1.6
f ( 6 ) f(6) f(6) = f ( 3 ) f(3) f(3) + 2.3

得到如下:
在这里插入图片描述
f(8),最短路径是从节点1-6,加上节点6-8得来的,f(6)又是f(3)再加上节点3-6得来的。找经过的节点是通过反推的

分出来的结果: 经常/有意见/分歧 (只是举例,最好的应该是经常/有/意见/分歧)

十二、拼写错误纠正(视频25-27)

在这里插入图片描述
英文上可能是两种场景:拼写错误,时态错误

通过计算编辑距离,来看错误的词与哪些词最近,编辑距离指的是从错误的单词修改成正确的单词需要几步
在这里插入图片描述
时间复杂度是O(v):v是词库里的所有单词。
这就意味着每出现一次错误单词,都要跟词典里的每个单词进行比对
在这里插入图片描述
生成的编辑距离为1,2的字符串的个数可能有10的4次方-6次方那么多。如何过滤呢?
在这里插入图片描述
数学中argmax的的定义是求使得某个函数取最大值时,里面的参数是多少?
上面的意思是,已知一个可能输错的字符串s,求正确字符串c的最大概率时,c是哪个字符串(c属于候选集中)

利用贝叶斯定理进行转换
在这里插入图片描述
P(S)可以省略掉,因为把它看作是一个恒定的常数,只要求如下部分就好
在这里插入图片描述
P©:也就是正确字符串的概率,在字典中统计得到
P(s|c):可以通过大数据,后台统计已经写错的字符串,看他们本应该是什么正确的字符串

十三、停用词过滤

在NLP的应用中,要去掉停用词,出现频率很低的词汇
在这里插入图片描述
stemming:词根还原,通过时态,规则进行词性还原
在这里插入图片描述
在这里插入图片描述

十四、文本的表示word presentation(向量)

1.词的表示

最经典,最简单的one-hot encoding。
构建一个字典,里面包含n个词,第i个词的表示方式,是一个一维向量,在第i的位置上是1,其他位置是0
在这里插入图片描述

2.句子的表示

方法一:boolean布尔值表示,用一个句子里的词是否出现在字典中来表示,所表示的维度长度是字典的大小
在这里插入图片描述

方法二:count表示,要考虑词出现的次数
在这里插入图片描述

十五、计算两个句子的相似度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过one-hot的简单的对文本的表示并不能很好的提取信息。
出现越多的词并不意味着它越重要,出现的越少的词有时候反而很重要

十六、tf-idf对文本进行表示(视频31)

计算句子的tf-idf值

十七、词向量(视频32-33)

one-hot representation来表示词/句子时,是无法得出句子与句子之间,词与词之间的相似度的。
且one-hot表示得到的向量太过稀疏了
所以引入词向量

在这里插入图片描述
有很多种训练词向量的方法,最常用的还是skip-gram和cbow
在这里插入图片描述
一般来说向量的维度不超过300维

十八、倒排序(视频34)

回顾下,如何做自动回答系统:
1.要有个知识库,里面包含了问题-回答pair
2.用户输入一个问题,输入跟知识库里的question进行相似度匹配
3.找到相似度最高的问题,返回知识库中对应的答案

在这里插入图片描述
如果知识库里有n个问答对,就要计算n次相似度
时间复杂度:O(N) ✖ 每次相似度计算的复杂度

如何减少复杂度?
核心思路:层次过滤思想,过滤掉大概率不是我想要的答案
在这里插入图片描述
第一层过滤要选择最快的,也就是时间复杂度要小。逐层往下时间复杂度越来越复杂

过滤怎么做呢?就要用到倒排表inverted index。
1.有一个词典
2.词典中的每个词要有一个倒排表记录,这个词出现在哪些文档中doc1.doc2…
3.当一个搜索输入进系统后,分词,看下问题中的词通过倒排表找到,这个词出现在哪些文档中
4.就返回出现词最多的的文档
在这里插入图片描述

十九、Noisy channel model(视频35)

那个符号是等比于的意思
在这里插入图片描述

二十、语言模型Language model(36)

1.介绍

在这里插入图片描述
在这里插入图片描述
如何训练一个pre-trained的模型来判断一个句子符合语义的概率大于另一个?
在这里插入图片描述

2.chain rule

条件概率,联合概率
在这里插入图片描述

某个词A出现在一些词B,C,D…的后面的概率,是通过在语料库中,大量检索统计的来的。
但句子的组合千变万化,很可能没有这种句子,大部分短语在语料库中找不到,那么统计出来的概率就很稀疏
在这里插入图片描述
如何解决呢?用到马尔可夫假设:用来估计概率的

3.马尔可夫假设

只考虑最近的一个词出现后下个词出现的概率
在这里插入图片描述
举例,淘宝推荐系统,会参考一个用户的购买记录,日期越近的购买记录,权重越大,越需要考虑。

以此类推
在这里插入图片描述
在这里插入图片描述

4. unigram,bigram,N-gram

Unigram模型就是假设,句子中的每个词都是相互独立的,不考虑周围次的出现
在这里插入图片描述
在这里插入图片描述

Unigram语言模型,无法考虑单词的顺序

bigram会考虑到前面一个词出现的概率
在这里插入图片描述

5.如何构造语言模型

核心就是对文本的统计

Unigram语言模型的计算:如何得到每个单词的概率
在这里插入图片描述
1.统计语料库中总共有多少个单词:比如说有10的6次方个词
2.统计语料库中某个单词出现的次数,比如说“我们”这个词在语料库中出现了7万次
3.P(我们) = 7万/10的6次方

可能遇到如下一种情况,有个词没出现在语料库,那么他的概率就是0,进而影响到整句话的概率都为0
在这里插入图片描述
怎么解决这一问题呢,对不存在的词的分子添加一个很小的数,让它不为0

Bigram计算
在这里插入图片描述

6.评估一个语言模型

在这里插入图片描述
第二种思路:
就是让语言模型做个填空,来预测下一个词会出现什么

在这里插入图片描述

引入perplexity评估标准,
一个语言模型越好,x值越大,perplexity就越小。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
维度越高,perplexity越小,也就是越好的。

7.解决概率会为0的问题(视频41)

前几节讲了,如果一个词没出现在语料库,那么它的概率会为0,影响整句话的出现概率
如何解决?
在这里插入图片描述

add-one smoothing (Laplace smoothing) 也叫拉普拉斯平滑

在朴素贝叶斯中经常用到
在这里插入图片描述
MLE: Maximum likelihood expectation 最大似然估计,这是最原始的对一个词的概率估计

Padd-1概率:是在分子加了1,分母加了V,V指的是语料库中词的个数(unique的词的个数)

在这里插入图片描述

add-k smoothing(视频42)

比add-1高级一点点
在这里插入图片描述
如何选择k值?
通过优化perplexity,找到最合适的k

interpolation插补 平滑(视频43)

在这里插入图片描述

目前没看到这些词,短语的出现,不代表未来不会出现。未必它们的概率就是0
如上,kitchen出现的概率比arboretum高,但in the kitchen 暂时没出现在文本库中,但我们可以预测
in the kitchen 比 in the arboretum 在未来出现的概率要高
也就是对未出现的短语的概率估计,要考虑unigram的概率,既in the kitchen 未出现,我们可以考虑kitchen的概率
在这里插入图片描述
在这里插入图片描述

对于一个未出现的三字短语(trigram)的预测,要考虑unigram,bigram,trigram三种,并对每种概率分配权重

good turning smoothing(视频48-49)

引入问题:

在这里插入图片描述

具体操作:
在这里插入图片描述
sam:出现了2次
I出现了3次
am出现了2次
do出现了1次
not出现了1次
eat出现了1次
在这里插入图片描述

在这里插入图片描述

N指的是语料库中有多少个词(可以重复,非unique的词的数量总和)
在这里插入图片描述
在这里插入图片描述
缺点是,要知道一个出现r次得词的概率时,需要知道r+1次词的数量

二十一、动态规划(视频44-46)

二十二、利用语言模型生成句子(视频50)

二十三、专家系统与基于概率的AI系统(视频51)

在这里插入图片描述
AI系统分两大类:
专家系统:数据少/没有数据,通过专家来制定规则
概率系统:大量的数据

二十四、专家系统expert system(视频52-55 )

在这里插入图片描述

在这里插入图片描述
实际工作中还是有很多场景会用到专家系统而不是机器学习系统

二十五、机器学习介绍(视频56-57)

机器学习定义
在这里插入图片描述

机器学习的分类
supervised learning
unsupervised learning
generative model 生成模型:可以用来生成一些数据:图片,视频,句子
discriminative Model 判别模型(需要条件概率)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

机器学习步骤:
数据→数据清洗→特征工程→建模→预测
特征工程决定了机器学习的上限,模型的选择和调优只是为了逼近这个上限

二十六、朴素贝叶斯介绍,垃圾邮件分类(视频58-59)

在这里插入图片描述

二十七、python,pandas的lambda表达式,三元运算符(60)

lambda表达式是python的匿名函数,不需要def命名

add_lambda = lambda x,y:x+y
add_lambda(2,3)
#等同于
def add(x,y):
	return x+y
add(2,3)

在这里插入图片描述

二十八、python,map函数(61)

在这里插入图片描述

jupyter小技巧,shift+tab键能调出一个函数的使用说明
在这里插入图片描述
在这里插入图片描述
传入多个参数
在这里插入图片描述

二十九、python的filter函数(62)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三十、python的reduce函数(63)

在这里插入图片描述
reduce只输出一个结果
在这里插入图片描述
要导入functools包
在这里插入图片描述
在这里插入图片描述

这里的10,是作为初始化参数,从10开始相加,10+1+2…

三十一、列表\集合\字典推导式(64)

在这里插入图片描述

集合推导式
在这里插入图片描述
字典推导式
在这里插入图片描述

三十二、闭包(65)

闭包:一个返回值是函数的函数

def 外层函数(参数):
    def 内层函数():
        print("内层函数执行", 参数)

    return 内层函数


内层函数的引用 = 外层函数("传入参数")
内层函数的引用()

在这里插入图片描述

三十三、装饰器、语法糖、注解(66-67)

在这里插入图片描述

三十四、numpy介绍(68-75)

1.介绍

在这里插入图片描述
在这里插入图片描述

2.array创建

在这里插入图片描述
在这里插入图片描述

3.矢量化运算(70)

在这里插入图片描述
广播运算
在这里插入图片描述

4.索引和切片操作(71)

5. numpy 数组转置和轴对换(72)

在这里插入图片描述

6. 条件逻辑转数组(73)

np.where
在这里插入图片描述

7.numpy数学运算,排序(74)

在这里插入图片描述

8.numpy文件处理,存储读取(75)

在这里插入图片描述
在这里插入图片描述
保存成压缩文件

在这里插入图片描述

标签:NLP,概率,视频,模型,笔记,句子,录播,出现,分词
来源: https://blog.csdn.net/weixin_42167712/article/details/109784412