A. cv和nlp哪个数学要求更高
cv。CV是CurriculumVitae的缩写,原意指生活道路,现引申为简历,多指学术履历。截止2022年9月3日CV主要是用于申请学术、教育、科研职位,或者申请奖学金等等。cv和nlp相比,cv数学要求更高,nlp发展空间大,但不够成熟,要求不够严格,cv发展好,更加成熟,对员工数学水平要求更高。nlp是自然语言处理,是研究人与计算机交互的语言问题的一门学科。
B. nlp算法是什么呢
1、nlp算法是自然语言处理算法。自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
2、自然语言处理(nlp)是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。
3、自然语言处理(nlp)并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
4、自然语言处理(nlp)主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。
5、自然语言(nlp)的形式(字符串)与其意义之间是一种多对多的关系。其实这也正是自然语言的魅力所在。但从计算机处理的角度看,我们必须消除歧义,而且有人认为它正是自然语言理解中的中心问题,即要把带有潜在歧义的自然语言输入转换成某种无歧义的计算机内部表示。
C. 想学习自然语言处理,数学需要哪些科目
哈哈,这方面我比较熟悉,数学分析,高等代数当然是基础了,随机过程最好也了解一下,比较重要的就是数理统计,楼主最好能掌握茆诗松,王静龙所着的高等数理统计,其对数学的要求和其他软件方面的研究生比会高一些,因为其后续课程可能还会涉及神经网络和滤波器等内容,但都是浅尝辄止。关键还是你能对软件架构有一个总体了解,数学只是工具,具体应用时还是编程能力压倒一切,数学理论学起来深,具体用时其实just so so.因为我是相关专业的,欢迎追问和讨论。
D. 自然语言处理基础知识
NLP 是什么?
NLP 是计算机科学领域与 人工智能 领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的学科。NLP 由两个主要的技术领域构成:自然语言理解和自然语言生成。
自然语言理解方向,主要目标是帮助机器更好理解人的语言,包括基础的词法、句法等语义理解,以及需求、篇章、情感层面的高层理解。
自然语言生成方向,主要目标是帮助机器生成人能够理解的语言,比如文本生成、自动文摘等。
NLP 技术基于大数据、知识图谱、 机器学习 、语言学等技术和资源,并可以形成机器翻译、深度问答、对话系统的具体应用系统,进而服务于各类实际业务和产品。
NLP在金融方面
金融行业因其与数据的高度相关性,成为人工智能最先应用的行业之一,而NLP与知识图谱作为人工智能技术的重要研究方向与组成部分,正在快速进入金融领域,并日益成为智能金融的基石。舆情分析舆情主要指民众对社会各种具体事物的情绪、意见、价值判断和愿望等。
事件(Event ):在特定时间、特定地点发生的事情。主题(Topic):也称为话题,指一个种子事件或活动以及与它直接相关的事件和活动。专题(Subject):涵盖多个类似的具体事件或根本不涉及任何具体事件。需要说明的是,国内新闻网站新浪、搜狐等所定义的“专题”概念大多数等同于我们的“主题”概念。热点:也可称为热点主题。热点和主题的概念比较接近,但有所区别。
1. 词干提取
什么是词干提取?词干提取是将词语去除变化或衍生形式,转换为词干或原型形式的过程。词干提取的目标是将相关词语还原为同样的词干,哪怕词干并非词典的词目。
2. 词形还原
什么是词形还原? 词形还原是将一组词语还原为词源或词典的词目形式的过程。还原过程考虑到了POS问题,即词语在句中的语义,词语对相邻语句的语义等。
3. 词向量化什么是词向量化?词向量化是用一组实数构成的向量代表自然语言的叫法。这种技术非常实用,因为电脑无法处理自然语言。词向量化可以捕捉到自然语言和实数间的本质关系。通过词向量化,一个词语或者一段短语可以用一个定维的向量表示,例如向量的长度可以为100。
4. 词性标注
什么是词性标注?简单来说,词性标注是对句子中的词语标注为名字、动词、形容词、副词等的过程。
5. 命名实体消歧
什么是命名实体消岐?命名实体消岐是对句子中的提到的实体识别的过程。例如,对句子“Apple earned a revenue of 200 Billion USD in 2016”,命名实体消岐会推断出句子中的Apple是苹果公司而不是指一种水果。一般来说,命名实体要求有一个实体知识库,能够将句子中提到的实体和知识库联系起来。
6. 命名实体识别
体识别是识别一个句子中有特定意义的实体并将其区分为人名,机构名,日期,地名,时间等类别的任务。
7. 情感分析
什么是情感分析?情感分析是一种广泛的主观分析,它使用自然语言处理技术来识别客户评论的语义情感,语句表达的情绪正负面以及通过语音分析或书面文字判断其表达的情感等等。
8. 语义文本相似度
什么是语义文本相似度分析?语义文本相似度分析是对两段文本的意义和本质之间的相似度进行分析的过程。注意,相似性与相关性是不同的。
9.语言识别
什么是语言识别?语言识别指的是将不同语言的文本区分出来。其利用语言的统计和语法属性来执行此任务。语言识别也可以被认为是文本分类的特殊情况。
10. 文本摘要
什么是文本摘要?文本摘要是通过识别文本的重点并使用这些要点创建摘要来缩短文本的过程。文本摘要的目的是在不改变文本含义的前提下最大限度地缩短文本。
11.评论观点抽取
自动分析评论关注点和评论观点,并输出评论观点标签及评论观点极性。目前支持 13 类产品用户评论的观点抽取,包括美食、酒店、汽车、景点等,可帮助商家进行产品分析,辅助用户进行消费决策。
11.DNN 语言模型
语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。在机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等系统中都有广泛应用。
12.依存句法分析
利用句子中词与词之间的依存关系来表示词语的句法结构信息 (如主谓、动宾、定中等结构关系),并用树状结构来表示整句的的结构 (如主谓宾、定状补等)。
1、NLTK
一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的 jieba 处理库
2、文本处理流程
大致将文本处理流程分为以下几个步骤:
Normalization
Tokenization
Stop words
Part-of-speech Tagging
Named Entity Recognition
Stemming and Lemmatization
下面是各个流程的具体介绍
Normalization
第一步通常要做就是Normalization。在英文中,所有句子第一个单词的首字母一般是大写,有的单词也会全部字母都大写用于表示强调和区分风格,这样更易于人类理解表达的意思。
Tokenization
Token是"符号"的高级表达, 一般值具有某种意义,无法再拆分的符号。在英文自然语言处理中,Tokens通常是单独的词,因此Tokenization就是将每个句子拆分为一系列的词。
Stop Word
Stop Word 是无含义的词,例如’is’/‘our’/‘the’/‘in’/'at’等。它们不会给句子增加太多含义,单停止词是频率非常多的词。 为了减少我们要处理的词汇量,从而降低后续程序的复杂度,需要清除停止词。
Named Entity
Named Entity 一般是名词短语,又来指代某些特定对象、人、或地点 可以使用 ne_chunk()方法标注文本中的命名实体。在进行这一步前,必须先进行 Tokenization 并进行 PoS Tagging。
Stemming and Lemmatization
为了进一步简化文本数据,我们可以将词的不同变化和变形标准化。Stemming 提取是将词还原成词干或词根的过程。
3、Word2vec
Word2vec是一种有效创建词嵌入的方法,它自2013年以来就一直存在。但除了作为词嵌入的方法之外,它的一些概念已经被证明可以有效地创建推荐引擎和理解时序数据。在商业的、非语言的任务中。
### 四、NLP前沿研究方向与算法
1、MultiBERT
2、XLNet
3、bert 模型
BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。
BERT提出之后,作为一个Word2Vec的替代者,其在NLP领域的11个方向大幅刷新了精度,可以说是近年来自残差网络最优突破性的一项技术了。BERT的主要特点以下几点:
使用了Transformer作为算法的主要框架,Trabsformer能更彻底的捕捉语句中的双向关系;
使用了Mask Language Model(MLM)和 Next Sentence Prediction(NSP) 的多任务训练目标;
使用更强大的机器训练更大规模的数据,使BERT的结果达到了全新的高度,并且Google开源了BERT模型,用户可以直接使用BERT作为Word2Vec的转换矩阵并高效的将其应用到自己的任务中。
BERT的本质上是通过在海量的语料的基础上运行自监督学习方法为单词学习一个好的特征表示,所谓自监督学习是指在没有人工标注的数据上运行的监督学习。在以后特定的NLP任务中,我们可以直接使用BERT的特征表示作为该任务的词嵌入特征。所以BERT提供的是一个供其它任务迁移学习的模型,该模型可以根据任务微调或者固定之后作为特征提取器。
模型结构: 由于模型的构成元素Transformer已经解析过,就不多说了,BERT模型的结构如下图最左:
对比OpenAI GPT(Generative pre-trained transformer),BERT是双向的Transformer block连接;就像单向rnn和双向rnn的区别,直觉上来讲效果会好一些。
优点: BERT是截至2018年10月的最新state of the art模型,通过预训练和精调横扫了11项NLP任务,这首先就是最大的优点了。而且它还用的是Transformer,也就是相对rnn更加高效、能捕捉更长距离的依赖。对比起之前的预训练模型,它捕捉到的是真正意义上的bidirectional context信息。
缺点: MLM预训练时的mask问题
[MASK]标记在实际预测中不会出现,训练时用过多[MASK]影响模型表现
每个batch只有15%的token被预测,所以BERT收敛得比left-to-right模型要慢(它们会预测每个token)
BERT火得一塌糊涂不是没有原因的:
使用Transformer的结构将已经走向瓶颈期的Word2Vec带向了一个新的方向,并再一次炒火了《Attention is All you Need》这篇论文;
11个NLP任务的精度大幅提升足以震惊整个深度学习领域;
无私的开源了多种语言的源码和模型,具有非常高的商业价值。
迁移学习又一次胜利,而且这次是在NLP领域的大胜,狂胜。
BERT算法还有很大的优化空间,例如我们在Transformer中讲的如何让模型有捕捉Token序列关系的能力,而不是简单依靠位置嵌入。BERT的训练在目前的计算资源下很难完成,论文中说的训练需要在64块TPU芯片上训练4天完成,而一块TPU的速度约是目前主流GPU的7-8倍。
E. 自然语言处理和计算机视觉哪个更依赖数学知识
自然语言处理更依赖数学知识
视觉在学术圈退火意味着技术已经比较成熟,正是工业界大干快上的好时机。
但是工业应用想要成功,必须深耕一个垂直市场,比如自动驾驶,医疗图像,安全监控,其中医疗图像我认为是最有潜力的方向。
想要做一个通用平台搞分类监测的公司基本都会遇到商业模式不清晰,竞争激烈,变现困难的问题,最好的下场也就是被大厂收购或者包养。自然语言处理也有一些商业机会,但是想靠深度学习横扫天下不现实
。需要新老方法的结合以及深厚的经验积累。自然语言更是需要深耕垂直市场,通用算法完全看不到商业模式,像聊天机器人啊自动翻译这种东西都是大厂用来提高知名度的,无法变现。
垂直市场方面我看好法律应用,助理律师的很多工作,比如对比判例、专利这种,完全可以自动化。
F. 自然语言处理需要大量编程么与图像处理比较呢求大神解答!
都需要编程,当然最重要的是模型和算法,就是那些数学公式,编程是对这些模型的实现。一般来说图像处理的编程更复杂一些,但有一些公开类库可用,比如OpenCV、OpenGL等,自然语言处理的数据量比较大,除了编程外,有时候还要用到数据库。
G. 【数学之美笔记】自然语言处理部分(一).md
数字、文字和自然语言一样,都是信息的载体,他们的产生都是为了 记录和传播信息 。
但是貌似数学与语言学的关系不大,在很长一段时间内,数学主要用于天文学、力学。
本章,我们将回顾一下信息时代的发展,看语言学如何慢慢与数学联系起来的。
最开始的时候,人类会用 声音 来传播信息。
这里面的信息的产生、传播、接收、反馈,与现在最先进的通信在原理上没有任何差别。
因为早期人类需要传播的信息量不多,所以不需要语言文字。
但是当人类进步到一定的程度的时候,就需要语言了。
所以我们的祖先将语言描述的共同因素,比如物体、数量、动作便抽象出来,形成了今天的词汇。
随着人类的发展,语言和词汇多到一定的程度,大脑已经无法完全记住了。此时就需要一种 文字 ,将信息记录下来。
使用文字的好处在于,信息的传输可以跨越时间、空间了,两个人不需要在同一时间,同一地点碰面就可以进行信息的交流。
那么如何创造文字呢?最直接的方式就是模仿要描述对象的形状,这就是所谓的象形文字。
早期,象形文字的数量和记录一个文明的信息量是相关的,也就是说象形文字多,代表着这个文明的信息量大。
但是随着信息量的增加,没有人能学会和记住这么多的文字,这样就需要进行 概括和归类 了。也就是使用一个词来表达相同和相似的一类意思。
比如说“日”本来是说太阳,但是它又同时可以是我们讲的一天。
这种概念的聚类,和现在自然语言处理或者机器学习的 聚类 很相似,只是在远古,可能需要上千年,而现在只需要几小时。
但是文字按照意思来聚类,总会有 歧义性 ,也就是弄不清楚一个 多义字 在特定环境下表示其中哪一个含义。
要解决这个问题,都是 依靠上下文 ,大多数Disambiguation可以做到,但总有个别做不到的时候。 对上下文建立的概率模型再好,也会有失灵的时候。
不同的文明因为地域的原因,文字和语言一般来说是不同的,当两个文明碰在一起的时候,翻译的需求就有了。
翻译能达成的原因:不同的文字系统在记录信息的能力上是等价的 ,文字只是信息的载体,而不是信息的本身,甚至可以用数字进行搭载。
今天,我们对埃及的了解比玛雅文明多,要归功于埃及人通过文字记录了生活中最重要的信息,对我们的指导意义在于:
文字是在头脑里面已经装不下信息的时候才出现,而数字则是在财产需要数一数才能搞清楚的时候才产生。
早期的数字没有书写的形式 ,只是说掰指头,这也是我们使用 十进制 的原因。
渐渐地,祖先发现十个指头也不够用了,最简单的方法是把脚趾头也算上,但是不能解决根本问题。于是他们发明了 进位制 ,也就是逢十进一。
那为什么现有的文明多用十进制,而不是二十进制呢?
相比十进制,20进制多有不便,比如说十进制只需要背诵九九乘法表,如果是20进制的话,就需要背19*19的围棋盘了。
对于不同位数的数字表示,中国人和罗马人都用明确的单位来表示不同的量级。
中国人是用十百千万亿兆,罗马人用I表示个,V表示5等等。
这两种表示法都不自觉的引入了朴素的编码的概念。
描述数字最有效的是古印度人,他们发明了10个阿拉伯数字,比中国和罗马的都抽象,这也标志着数字和文字的分离。客观上让自然语言与数学在几千年没有重复的轨迹。
从象形文字到拼音文字是一个飞跃,因为人类在描述物体的方式上,从物体的外表到抽象的概念,同时不自觉的采用了对信息的编码。
不仅如此,在罗马体系的文字中,常用字短,生僻字长,在意型文字中,也是一样,常用字笔画少,而生僻字笔画多,这符合信息论中的 最短编码原理。
罗马语言体系:
在纸发明之前,书写文字并不容易。所以需要惜墨如金,所以古文这种书面文字非常简洁,但是非常难懂。而口语却与现在差别不大。这就和现在的信息科学的一些原理类似
这点就是现在的互联网与移动互联网的网页设计完全一致。
使用宽带的话,页面得设计得比较大,而手机终端上的由于受空中频道带宽的限制,传输速度慢,分辨率低。
《圣经》记录了创世纪以来,犹太人祖先的故事,《圣经》的写作持续了很多世纪,有若干人来完成,抄写的错误在所难免,
为了避免抄错,犹太人发明了一种类似 校验码 的方法,他们把希伯来字母对应于一个数字,每行加起来就是一个特殊的数字,这个数字即为 校验码 。
当抄完一页以后,需要把每一行的文字加起来,看看校验码与原文是否相同。
从字母到词的构词法是词的编码规则,那么语法则是语言的编码和解码规则。
相比较而言, 词是有限且封闭的集合, 语言则是无限和开放的集合。 从数学上来讲,前者有完备的编解码规则,而语言则没有,也就是说语言有语法规则覆盖不到的地方,这就是“病句”
那么到底是语言对,还是语法对呢?有人坚持从真实的语料中出发,有人坚持从规则出发。
本章讲述了文字、数字、语言的历史,帮助读者感受语言和数学内在的联系。提到了如下的概念
上一章我们说到,语言出现的目的就是为了人类的通信,而字母、文字、数字实际上是 信息编码 的不同单位。
任何一种语言都是一种编码方式,而语言的语法规则是编解码的算法。比如,我们把想要表达的东西通过语言组织起来,这就是进行了一次编码,如果对方能懂这个语言,它就可以使用这门语言的解码方式进行解码。
那么机器是否可以读懂自然语言呢?当然可以
自然语言处理发展过程可以分为两个阶段:
50年代,学术界对人工智能和自然语言理解的认识是这样的:要让机器完成语音识别,必须让计算机理解自然语言。因为人类就这么做的。这种方法论就称为“鸟飞派”,也就是看鸟怎么飞的来造出飞机。事实上,人们发明飞机靠的是空气动力学,而不是仿生学。
那么如何才能理解自然语言呢?
一般需要:
我们可以看一个简单的句子
这个句子可以分为主、谓、句号三部分,可以对每个部分进一步分析,得到如下的语法分析树(Parse Tree)
分析它采用的文法规则称为 重写规则
但是这种方法很快遇到了麻烦。从上图可以看出 一个短短的句子居然分析出这么一个复杂的二维树结构 ,如果要处理一个真实的句子就非常的麻烦了。
主要有两个坎儿:
那么其实从语法这条路来分析句子,并不靠谱。
上面我们讲到了基于规则的句法分析对于语义处理比较麻烦,因为 自然语言中的词的多义性难用规则来描述,而是依赖于 上下文 。
比如 “The box is in the pen.” 因为这里pen是围栏的意思。整句话翻译成中文就是“ 盒子在围栏里” 。这 里 面 pen是指钢笔还是围栏 ,通过上下文已经不能解决,需要常识
1970年以后统计语言学让自然语言处理重获新生,里面的关键任务是贾里尼和他领导的IBM华生实验室。最开始的时候,他们使用统计的方法,将当时的语音识别率从70%提升到90%,同时语音识别规模从几百单词上升到几万单词
基于统计的自然语言处理方法,在数学模型与通信是相通的,因此在数学意义上,自然语言处理又和语言的初衷—— 通信 联系在一起了。
前面的章节,我们一直强调,自然语言从产生开始,逐渐演变成一种上下文相关的信息表达和传递方式。
所以要让机器能处理自然语音, 关键在于 为自然语音这种 上下文相关的 特性建立数学模型,这就是 统计语言模型(Statistical Language Model)
这个模型广泛应用于机器翻译、语音识别、印刷体识别、拼写纠错、汉字输入、文献查询
语音识别需要解决的一个重要的问题就是计算机给出来的一个文字序列,是否能被人类所理解。70年代以前,人们使用语义分析来解决。
而贾里克从另一个角度来看待这个问题,一个简单的统计模型就搞定了。
也就是说要看一个句子是否合理,就看看它的 可能性 大小如何 。
比如说一个通顺的语句出现的概率为$10 {-20}$,而一个乱七八糟的语句出现的概率为$10 {-70}$,所以通顺的语句更有可能。
假定$S$表示一个有意义的句子,由一串特定顺序的词${omega _1},{omega _2}, cdots ,{omega _n}$组成,这里$n$是句子的长度。现在需要知道这个句子出现的概率
$$Pleft( S ight) = Pleft( {{w_1},{w_2}, cdots ,{w_n}} ight)$$
利用条件概率的公式,$S$这个序列出现的概率等于每个词出现概率相乘
$$Pleft( {{w_1},{w_2}, cdots ,{w_n}} ight) = Pleft( {{w_1}} ight)Pleft( {{w_2}|{w_1}} ight) cdots Pleft( {{w_n}|{w_1},{w_2}, cdots ,{w_{n - 1}}} ight)$$
问题就来了,这种条件概率怎么计算呢?
20世纪初,俄国的数学家马尔科夫给出了一个有效的方法,当遇到这种情况的时候,假设任意一个词$w_i$出现的概率只与前面的词$w_{i-1}$有关,与其他词无关,这就叫 马尔科夫假设
所以公式又变成了
$$Pleft( {{w_1},{w_2}, cdots ,{w_n}} ight) = Pleft( {{w_1}} ight)Pleft( {{w_2}|{w_1}} ight) cdots Pleft( {{w_n}|{w_{n - 1}}} ight)$$
这就叫 二元模型(Bigram Model)
如果假设一个词由前面$N-1$个词决定,对应的模型就叫$N
$元模型,会更复杂。
同样那么如何估算条件概率$Pleft( {{w_i}|{w_{i - 1}}} ight)$,可以先看一下它的定义
$$Pleft( {{w_i}|{w_{i - 1}}} ight) = frac{{Pleft( {{w_{i - 1}},{w_i}} ight)}}{{Pleft( {{w_{i - 1}}} ight)}}$$
需要做的是估计
那么这两种概率如何得到?
有了大量的语料库(Corpus)以后,只要数一下${{w_{i - 1}},{w_i}}$在统计的文本前后相邻出现了多少次${# left( {{w_{i - 1}},{w_i}} ight)}$即可。然后除以语料库的大小#,这样就可以使用 频度 来估计概率了。
根据 大数定理 ,只要统计量足够,相对频度就等于概率。
$$Pleft( {{w_i}|{w_{i - 1}}} ight) = frac{{# left( {{w_{i - 1}},{w_i}} ight)}}{{# left( {{w_{i - 1}}} ight)}}$$
居然用这么复杂的模型就可以解决复杂的语音识别、机器翻译的问题。
二元模型最大的特点在于,每个词只与前面一个词有关,太简化了,更普遍的是某个词与前面若干词都有关。
所以$N$元模型指的就是当前词$w_i$只取决于前$N-1$个词,这就是 N-1阶马尔科夫假设
实际中,三元模型用得多更多,所以$N=3$,而更高阶的就比较少用了,因为
使用语言模型需要知道模型中所有的 条件概率 ,我们称之为 模型的参数 。
通过对语料的统计,得到这些参数的过程称作 模型的训练 。
之前我们讲过,只需要统计出相邻两个字符同时出现的次数以及${w_{i - 1}}$单独出现的次数,然后计算一下比值即可。
但是有一种情况我们没有考虑,如果相邻两个词并没有同时出现过,也就是$# left( {{w_{i - 1}},{w_i}} ight) = 0$怎么办,是否就说明概率为0。
当然不是,这就涉及到统计的 可靠性 了。
在数理统计中,我们之所以敢用采用数据来预测概率,是因为 大数定理 ,它的要求是有足够的观测值。也就是如果样本太小,则使用次数来预测概率当然不靠谱。
那么如何正确的训练一个语言模型呢?
下面以统计词典中每个词的概率来具体讲讲。
假定在语料库中出现$r$次的词有$N_r$个,$N$表示语料库的大小。
$$N = sumlimits_{r = 1}^infty {r{N_r}} $$
也就是说每个词出现的$r$词的词的个数与出现了多少次相乘。
当$r$比较小,说明出现的次数不够多,那么在计算它们的概率的时候要使用一个更小一点的次数,比如$d_r$
$${d_r} = left( {r + 1} ight)frac{{{N_{r + 1}}}}{{{N_r}}}$$
而且
$$sumlimits_r {{d_r}{N_r}} = N$$
一般来说, 出现1次的词的数量比出现两次的多,同样出现两次比出现三次的多。
也就是出现的次数$r$越大,词的数量$N_r$越小,所以${N_{r + 1}} < {N_r}$,可以看出${d_r} < r$,这样估算是因为$d_r$是我们要找的那个比$r$更小的数,而当只出现0次的时候${d_0}>0$
这样,
对于二元模型,
其中
这种平滑的方法最早是由IBM的卡茨提出来的,所以称为 卡茨退避法
还有一种方法是 删除差值 法,也就是用低阶模型和高阶模型进行线性插值的方法来平滑处理,但是因为效果差于卡茨退避发,所以很少使用了。
模型训练中另一个重要问题是 训练数据 ,或者说是语料库的选取,如果训练预料和模型应用的领域相脱节,模型的效果也要大打折扣。
比如对于建立一个语言模型,如果应用是网页搜索,它的训练数据就应该是 杂乱的网页数据 和用户输入的搜索串,而不是传统的、规范的新闻稿 ,即使前者夹杂着噪音和错误。因为训练数据和应用一致,搜索质量反而更好。
训练数据通常是越多越好,高阶模型因为参数多,需要的训练数据也相应会多很多,遗憾的是,并非所有的应用都能有足够的训练数据,比如机器翻译的双语语料,这个时候,追求高阶的大模型没有任何意义。
如果训练数据和应用数据一致了,而且训练量足够大了以后,训练预料的噪音高低也会对模型产生影响。所以训练之前需要进行预处理,对于可以找到规律的而且还比较多的噪音需要进行处理,比如制表符
对于西方拼音来说,词之间有明确的分界符(Delimit)。但是对于中文来讲,词之间没有明确的分界符。所以需要先对句子进行分词。
最容易想到的方法就是 查字典 也就是说,从左到右扫描一遍,遇到字典里面有的词就标识出。
但是这种方法遇到复杂的问题就不行了。比如说遇到 二义性 的分割时。像“发展中国家”,正确的分割是“发展-中-国家”,而从左向右查字典会分割为“发展-中国-家”
同样我们可以使用 统计语言模型 来解决分词二义性的问题。
假定一个句子$S$有几种分词方法:
$$egin{array}{l}
{A_1},{A_2},{A_3}, cdots ,{A_k}
{B_1},{B_2},{B_3}, cdots ,{B_m}
{C_1},{C_2},{C_3}, cdots ,{C_n}
end{array}$$
最好的分词方法 就是分完词以后,这个句子出现的概率最大。
当然如果穷举所有的分词方法,并计算每种可能性下的句子的概率,那么计算量是相当大的。
可以看作是一个 动态规划(Dynamic Programming) 问题,并利用 维特比(Viterbi)算法 快速的找到最佳分词
语言学家对词语的定义不完全相同,比如说“北京大学”,有人认为是一个词,有人认为是两个词。折中的方法就是先当做一个四字词,然后再进一步找到细分词“北京”和“大学”
人工分词产生不一致性的主要原因在于人们对词的 颗粒度 的认识问题。
比如说“清华大学”,有人认为是一个整体,有人认为“清华”是修饰“大学”的。这里不需要去强调谁的观点正确,而是应该知道,在不同的应用里面,会有一种颗粒度比另一种更好的情况。
比如说在机器翻译中,颗粒度大翻译效果好,比如“联想公司”如果拆分为开,很难翻译为“Lenovo”。但是在网页搜索里面,小的颗粒度会比大的要好,比如用户查询“清华”而不是“清华大学”一样可以查询到清华大学的主页。
如果为不同的应用构建不同的分词器,太过浪费。可 以让一个分词器同时支持不同层次的词的切分。
也就是说先把句子按照基本词进行分割,再把基本词串按照复合词模型再分割。
H. 快速了解什么是自然语言处理
摘要:
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学等于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
1 计算机对自然语言处理的过程
1.1把需要研究是问题在语言上建立形式化模型,使其可以数学形式表示出来,这个过程称之为"形式化"
1.2把数学模型表示为算法的过程称之为"算法化"
1.3根据算法,计算机进行实现,建立各种自然语言处理系统,这个过程是"程序化"
1.4对系统进行评测和改进最终满足现实需求,这个过程是"实用化"
2 自然语言处理涉及的知识领域
语言学、计算机科学(提供模型表示、算法设计、计算机实现)、数学(数学模型)、心理学(人类言语心理模型和理论)、哲学(提供人类思维和语言的更深层次理论)、统计学(提供样本数据的预测统计技术)、电子工程(信息论基础和语言信号处理技术)、生物学(人类言语行为机制理论)。故其为多边缘的交叉学科
3 自然语言处理涉及的范围
3.1语音的自动合成与识别、机器翻译、自然语言理解、人机对话、信息检索、文本分类、自动文摘等等,总之分为四大方向:
语言学方向
数据处理方向
人工智能和认知科学方向
语言工程方向
3.2也可细分为13个方面
口语输入:语音识别、信号表示、鲁棒的语音识别、语音识别中的隐马尔科夫模型方法、语言模型、说话人识别、口语理解
书面语输入:文献格式识别、光学字符识别(OCR):印刷体识别/手写体识别、手写界面、手写文字分析
语言分析理解:小于句子单位的处理、语法的形式化、针对基于约束的语法编写的词表、计算语义学、句子建模和剖析技术、鲁棒的剖析技术
语言生成:句法生成、深层生成
口语输入技术:合成语音技术、语音合成的文本解释、口语生成
话语分析与对话:对话建模、话语建模口语对话系统
文献自动处理:文献检索、文本解释:信息抽取、文本内容自动归纳、文本写作和编辑的计算机支持、工业和企业中使用的受限语言
多语问题的计算机处理:机器翻译、人助机译、机助人译、多语言信息检索、多语言语音识别、自动语种验证
多模态的计算机处理:空间和时间表示方法、文本与图像处理、口语与手势的模态结合、口语与面部信息的模态结合:面部运动和语音识别
信息传输和信息存储:语音压缩、语音品质的提升
自然语言处理中的数学方法:统计建模和分类的数学理论、数字信号处理技术、剖析算法的数学基础研究、神经网络、有限状态分析技术、语音和语言处理中的最优化技术和搜索技术
语言资源:书面语料库、口语语料库、机器词典与词网的建设、术语编撰和术语数据库、网络数据挖掘和信息提取
自然语言处理系统的评测:面向任务的文本分析评测、机器翻译系统和翻译工具的评测、大覆盖面的自然语言剖析器的评测、语音识别:评估和评测、语音合成评测、系统的可用性和界面的评测、语音通信质量的评测、文字识别系统的评测
4自然语言处理的发展的几个特点
基于句法-语义规则的理性主义方法受到质疑,随着语料库建设和语料库语言学 的崛起,大规模真实文本的处理成为自然语言处理的主要战略目标。
自然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。
统计数学方法越来越受到重视。
自然语言处理中越来越重视词汇的作用,出现了强烈的"词汇主义"的倾向。
最后,你了解了吗。