NLP Basics1-1

why is NLP important?

nlp 即让计算机读懂人写好的这些文字,和人一样进行交互和对话,去生成自然语言

意义:人类语言是人类智能的体现

图灵测试:判断机器是否具备智能(人无法判断对方是人还是机器)

nlp是人工智能能够通过图灵测试的一种重要基础工具

图灵测试,最初为:imitation game模仿游戏,看起来像人具有人的智能水平

2011 IBM Watson deepQA nlp又一个里程碑

advances in natural language processing

typical tasks & application

基本任务包括:

part of speech:标注词性

named entity recognition:在名词中找到哪些是可以识别的实体,比如一些人名、地名、机构名、日期等等

co-reference:共指消解,更好的理解这句话,需要知道后面的这个代词指代的是前面的那一个实体

basic dependencies:识别实体之间的依赖关系

中文与英文的区别,词与词之间是没有空格的:需要专门的处理:中文的自动分词

nlp应用:

1、search engines and ads

搜索引擎和在线广告领域基本工作原理:

搜索引擎2个技术:

(1)匹配用户的query和所有的文档之间的相关度(nlp处理:一个query和一个document相匹配)能算出这个document能在多大程度上满足这个query的需求

(2)盈利,给到query还可以返回所相关的广告,一旦用户点击,那么这个广告商需要给搜索引擎付费

(3)判断这些网站或者网页的质量怎么样:page ranke。利用互联网之间的链接信息进行评估,如何分析一个网络的结构,来分析哪些节点是重要的

2、nlp& structural knowledge 密切相关

三元组,来表示两个实体及其关系

eg:

(William Shakespeare,book/author/works_written,Romeo and Juliet)

head entity ,relation ,tail entity

知识抽取出来,理解,获取文本

knowledge graph——知识图谱构建,Google——可以回答一些相关内容——技术:machine learning——三元组提取信息——充实知识图谱

3、personal assistant

图灵测试智能,更好服务于人——亚马逊小杜智能音响、虚拟助手——能理解人说的话,处理信息并回复信息——相关任务:机器翻译:一个语言里面的一句话翻译成另外一个语言里面的一句话,即:如何解除语言的屏障;情感识别:infer personal states via text or speech(including opinions,emotions),detect opinion holders and targets(对谁发出的,目标是谁)—sentiment analysis and opinion mining情感分析,意见挖掘,运用nlp和情感分析技术去挖掘推特上所有不同州的用户不同时间发出的推特发出的情感分类

4、computational social science

与计算社会科学进行交叉,用语言作为一个视角来分析我们人类的心理

eg:分析扫描进两百年的历史,看一些关键词随着时间变化的趋势然后去分析人类文化的演进,开展社会学相关的研究。

研究,人类用词会反映人的心理状态(use language usage to study psychology states of humans)

distributed word representation

nlp中词的表示问题:

基本语言单位词,转换为机器可以理解的意思:

how to do?2个目标:

(1)基于词的表示去完成词与词之间的相似度计算 compute word similarity

如果你理解好了这个词的意思,那么你应该就能很好的去计算出任意两个词之间的相似度

eg:star和sun在某种程度上存在相关

motel和hotel

(2)能够知道和发现这些词和词之间的一些语义的关系 infer word relation

eg:china-beijing与Japan-tokyo

man约等于king-queen+woman

swimming约等于walking-walk+swim

词的表示方式:

1、方式一:

synonym and hypernym用近义词or上位词去表示

use a set of related words ,such as synonyms and hypernyms to represent a word

用一组相关的词,去表示当前的这个词

eg:nlp可以用以下表示:信息科学、科学、知识领域、内容、辨认、物理逻辑特征

这样的缺点是:

(1)词与词之间会有细小的差异,用这些是没有办法完成的

missing nuance:(proficient,good) are synoyms only in some contexts

(2)以前词意的标注是需要手动添加的,如果当前一个词新的意思出现的时候,此时用近义词或者是上位词去表示的话就没有办法很好的去表示出来

missing new meaning of words:Apple(fruit——》it company)

(3)subjective存在主观性问题,受限于你的词典的标注

(4)data sparsity存在数据吸收的问题,我们对于一个词的相关词表示,跟所有的词表来相比的话,他总是比较少

(5)requires human labor to create and adapt,需要大量的人工去构建和维护这个词典,因此我们利用上位词和近义词去表示词的这种方式,其操作性不是那么强

因此,最常用的还是:

2、方式二:

one-hot representation

把每一个词表示成一个独立的符号regard words as discrete symbols

和词表一样长的向量里面去找一维,和这个词相对应:其对应的位置为1,其他全都是0的这么一个向量来表示(整个向量的维度和词表相当)(可独一无二表示出)

eg:

word:sun

id:3

one-hot vector:[001000]

这个方法表示文档很有效,如:一个文档里出现了几百个词,那它就可以在这几百个词的位置上标非零,其他位置上标0,可以很好的去完成两个文档互相之间的相似计算

但是,在表示词的时候会出现问题,因为它会假设词和词之间的向量互相之间都是正交的,即任意两个词(向量)之间去进行相似度计算(内积)都是0

因此,

改进:用词的上下文去表示这个词contextual representation

如:stars这个词,上下文经常会出现shining、cold、night、light等,可以用这些去表示stars

用一个向量,这个向量的每一维,表示的是这个词的上下文到底它出现了多少次,或者出现的重要性怎么样的,此时,任何一个词都可以用它上下文出现的频度或重要性去进行表示,这样就可以得到关于每一个词的一个稠密的向量,因此可以在这个空间里,利用这个稠密的向量去算出来两个词之间的相似度

但是:

问题:1、但这个词表变得越来越大的时候,其存储的需求就会变得很大;2、对于那些出现频度特别少的词,它整个的向量,因为出现次数少,所以它上下文就会比较少,那么它这个上下文或者说它这个语境的这个词,就会变得稀疏,导致词的表示效果不是很好

针对以上改进:distributed representation

大模型提出,建立一个低纬的一个稠密的向量空间,然后尝试将每一个词都学到这个空间里,用这个空间里的某一个位置所对应的那个向量来表示这个词。就可以知道这些词之间应该会存在某些稳定的关系,如:国家和首都

计算词的相似度,可以用这些低纬向量,这些是可以利用大规模的数据自动去学习的,这个方面的代表性工作:word2Vec

language modeling

语言模型:根据前文来预测下一个词是什么的语言能力

这个能力能让其有更好的理解能力

主要2个工作:

1、计算一个序列的词,它成为一句话的概率是什么(联合概率)(joint probability)

2、根据前文能够预测下一个词是什么(conditional probability)

如何假设:

未来的词只会受到它前面的词的影响:联合概率和条件概率

计算eg:p(never too late to learn)=p(never)x p(too|never) x p(late|never too)x p(to|never too late)x p(learn|never too late to)

p(learn|never too late to)=p(never too late to learn)/p(never too late to)

N-gram model 他去统计到底前面出现了几个词之后,后面出现的那个词他的频度是怎么样的

如:4-gram

p(wj|never too late to)=count(too late to wj)/count(too late to)

前面出现3个词,后面的词出现(总共4个词)的概率到底有多大,到一个大规模数据里去统计这个频度

如果是bigram考虑两个词,那就是由前面的一个词来预测下一个词是什么

背后原理:遵循Markov assumption:不考虑太多超过范围的词,只考虑一定长度下n

另:n-gram的问题是:

1、n较大的时候,它考虑的上下文与前文其实会更长,由于采用的是基于符号的统计方式,前文越长,出现次数会越少,统计结果会非常地稀疏,同时n越大,它要存储的量也就越大,所以n-gram兴盛时,他的n为2或者3,即上下文只有1或者2,他没有办法考虑特别长

2、它背后的原理还是one-hot representation,他会假设所有的词都是相互独立的,因此做实际的统计的时候上下文其实都是基于符号来去做统计,他没有办法去理解这些词互相之间的相似度造成什么

如:the cat is walking in the bedroom

a dog was running in a room

n-gram不能发现这两个句子中的相似(cat和dog,walking和running)会认为他们的相似度为0

因此:深度学习出现之后,就会产生neural language model,其用分布式表示distributed representations去建构前文和当前词的预测条件概率

如,当前我要预测w,这要根据其前文的几个词,表示为低纬向量,然后将其拼接,形成一个更高的上下文的向量,然后经过一个非线性转换,就可以去用这个向量来预测我们的下一个词是什么。由于我们对于每一个词的向量和整个匹配的预测过程都是基于神经网络的可调的可学的参数来完成。所以我们就可以利用大规模的数据来自动地去学习这些词的向量,自动地学习上下文的这个向量和这个当前词到底是怎么去进行他们之间的神经网络的权重到底是什么。这个就是neural language model所完成的

n-gram每个词都是一个符号,而neural language model里面每个词都会表示成一个低纬的向量,这样的话,相似的词他的向量也就会比较相似,那么它就可能在这个语境里面发挥相似的作用,这个就是神经网络在语言模型上所作的工作。

你可能感兴趣的:(大模型,nlp)