ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NLP录播课笔记一

2020-11-25 16:02:55  阅读:170  来源: 互联网

标签: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有