菜鸟的NLP学习记001 ---------斯坦福公开课CS224n--------自然语言处理简介_坡坡没有东京热的博客-程序员秘密

技术标签: NLP  CS224n  自然语言处理  菜鸟的NLP笔记  

本文为学习笔记,供自己复习回顾,分享,交流,如果专家们发现谬误之处欢迎批评与修正。

----------------------------------------------------------------------------------------------------------------------------

最近因为有一门叫做text mining的课,并且NLP一直都很火,想入一下坑试试,所以就开了这一栏,来简单记录下自己的学习。

我NLP学习的是斯坦福公开课 CS224n 的Manning的课,很火,课上有很多人,和我们学校的text mining一样人很多,我看的是中文版的,链接如下,也可以上YouTube或者官网看。

CS224n 斯坦福深度自然语言处理课: http://www.mooc.ai/course/494

相关课程还有:
CS224U: Natural Language Understanding
CS224d: Deep Learning for Natural Language Processing

----------------------------------------------------------------------------------------------------------------------------

1.什么是自然语言处理?

首先一个概念,自然语言处理(NLP)是计算机专家取的名字,在语言学家眼里就是计算语言学(CL),其实他俩差不多,甚至在我们这种外行人眼里可以说是一样的,就是NLP是计算机科学的分支子学科,CL是语言学的分支子学科,和谐一点,咱学计算机的,就叫NLP吧,NLP是一门跨领域交叉学科,包括计算机科学,人工智能,语言学三大类,说白了,就是你得会编程,还得懂算法,之后还得学语言学,所以说这玩意难呢,我前俩还没搞懂呢这。

我们想要做的是让计算机去处理或者说是“理解”自然语言像人样使用语言进行表达,从而实现一些有意义的工作。例如:

1.执行像预定操作,购买操作等任务。(语言控制)

2.问答答疑,Siri, 小娜等等。

完全理解并表示语言意义是一件十分困难的事情,因为语言是人类所特有的,而且不同语言具有不同的表达方式,所以不可能做到完全理解,这是一个AI-Complete问题,事实上我们能让机器一知半解就很不错了。

语言层次理解

1.首先语音/文本输入处理

2.之后对单词结构进行形态分析(Morphological analysis),也就是了解单词的构成,什么名词动词,过去式现在进行时啥的。

3.之后我们需要理解句子结构,进行句法分析(Syntactic analysis),就是分析主谓宾定状补,从句啥的。

4.之后我们进行语义分析(Semantic Interpretation),解释句子的含义,一般是简单的单词意义和句子含义。

5.但仅仅如此还不行,咱人说话都是有语境上下文的,所以要引入语篇处理(Discourse Processing)的研究。

 

这门课我们主要关注中间那个圈,句法分析和语义分析,稍微讨论下左上角那个圈,句子结构的形态分析。

人类语言有啥特殊的 

1.人类语言是一个专门构建用来为人类传达信息的系统,不仅仅是环境信号,而是经过深思熟虑的交流,有很明确的指向性,虽然语言系统是一个非常复杂的系统,但是一个三四岁的小孩可以很容易学会。

2.语言是一个符号信号系统,我们在于人讨论东西时,实际上是在用符号系统与其他人交流,我们可以联想到东西的样子啥的,而且一丝丝小差别也会表达出不同的意思,不同的说话语境说出来同一样话也表达不同的意思。

e.g.我爱编程!  我爱编程?  我爱编程。   我爱编程!@#¥%……&

但是依赖符号,我们可以非常可靠的进行远距离信息的传输。

3.语言其实就是符号,但符号不只是基于逻辑或这传统AI的发明。当人类进行沟通时。虽然使用符号,但是说一种连续的载体进行信息传递,语言奇妙之处在于,你可以使用不同的连续载体进行相同信息的传递,手语,声音,文字等等。

4.其实我们是在对各种符号进行编码,但在编码背后,似乎都存在一种符号(我理解是,传达相同信息)。但在语言学中词汇特别多,所以容易造成编码稀疏问题。

2.什么是深度学习?

深度学习是机器学习的一个子领域,大多数传统的机器学习方法都能表现的很好,是因为人们审视问题并对于特征的选入和表征的设计,例如,我们会用主观知识(domain knowledge)去影响数据输入,确实这样效果很好。但这样机器学习到什么了么?实际上机器几乎什么都没学到,倒是人类学到了很多,他们仔细研究问题,做了大量的数据分析,机器到底干了啥??说白了,就是干了他最擅长的活,也是最开始发明计算机干的活,数值优化,调参,优化表现。

凡是,我们就仅仅让计算机帮我们数值优化么?

深度学习是表征学习的一个分支,表征学习的理念就是,我们可以只向电脑提供来自世界的原始信号,无论是视觉信号还是语言信号,然后,电脑可以自动得出好的中介表征,来很好的完成任务。所以从某种意义上来说,他是在自己定义特征和过去人类自己定义特征一样。

准确来说,DL真实含义是指你将得到多层习得特征,你可以用这些特征打败其他算法。大多数情况下我们讨论的是神经网络。

深度学习最早在语音上应用之后图片,最后是语言,也就是NLP。

3.为什么语言理解很难?

1.表示,学习,使用的复杂性

语言不局限于单一表达形式,历史,统计,可视化知识,反正就是涉及的东西很多。

2.人类语言是模糊的

在学编程时候,我们只要遵循语言的编写规则就可以了,但人类语言不是这样的,我们时常使用指代词,这个那个的,但只能结合上下文来搞清楚。而且我们还会使用一些省略来提高我们沟通效率。

3.人类语言解释取决于真实世界,共同感,以及上下文知识(语境知识)

我们考虑语言问题时,要结合具体的环境而定,而不是一概而论的。

Deep NLP = Deep Learning + NLP

我们将利用深度学习神经网络的思想以及表征学习的思想,将它们运用到语言理解,自然语言处理等方面的问题上。

e.g.传统上,我们使用词袋模型进行情感分析

使用神经网络改进语义特征,能更好的理解句子中的正面和负面情绪。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qweqwrfdsf/article/details/82316934

智能推荐

Java 中如何修改两个局部变量的值 ?_程序员啊粥的博客-程序员秘密

戳上方蓝字 “程序猿杂货铺” 关注我 并置顶星标!你的关注意义重大!今天的题目来源于小马哥的技术交流群里一位小伙伴的发问,他发出来这样一张图,问说是不是题目有问题,哪会...

H3C交换机链路聚合配置(已成功)_罗兴华-永远的领略的博客-程序员秘密_h3c链路聚合配置

简介交换机SW1与SW2通过G1/0/1~G1/0/3相互连接,创建VLAN10 与VLAN20 ,将主机PC_3与PC_5相连的接口GE1/0/4划分到VLAN10,将主机PC_4与主机PC_5相连接的接口划分到VLAN20,将网关分别设置为1.1.1.254,2.2.2.254,掩码24位(255.255.255.0),SW1作为DHCP服务器(作为全局DHCP服务器使用)。组网需求使用静态LACP链路聚合以提高链路的带宽与可靠性实现全网互通,相同VLAN的PC_3与PC_5可以互通,不同VL

(一)数据库的基本知识、基本操作和基本语法_qq_29704383的博客-程序员秘密

阅读目录基本知识数据库发展史数据库名词SQL组成基本操作登录数据库操作数据库远程连接操作数据库分离操作数据库脱机、联机操作数据库收缩操作数据库备份、还原操作数据库权限设置基本语法创建数据库创建表增删改查添加约束数据类型基本知识数据库到底是有什么作用?看下图应该就明白了。就是应用程序发送请求操作时,到服务器数据库中查询数据,然后再返回给应用程序。数据库起到的作用是存储数据、检索数据、生成新的数据,相...

Echarts的legend图例中的文字长度过长_kalinux的博客-程序员秘密_echarts图例文字过长

1,如图所示,文字长度过长2,网上很多解决办法是通过修改textStyle/rich,去修改width:textStyle: { rich:{ a: { width: 11 }, }, }但是不知道是版本原因,还是啥,我怎么改都没有用3,最后用 的formatter解决的:const dealWith = function(name:any){ .

neo4j 从csv文件批量添加数据_吕海洋的博客-程序员秘密

如果想保留原有数据的基础上导入一些新数据 neo4j-admin import 就不可以了,这时候就要用下面的方法同样先创建一个容器1、先创建两个目录 一个data 用来挂载数据库文件,一个import 用来存放导入的csv文件执行命令:docker run -itd --name neo4j -p 7474:7474 -p 7687:7687 --env=NEO4J_AUTH=no...

RANSAC算法理解_晓晨的博客的博客-程序员秘密

RANSAC(RAndom SAmple Consensus,随机采样一致)算法在很多方面如图像匹配、曲线/平面拟合取得了良好的应用。这里以笔记的形式对其进行一个简要的介绍总结。RANSAC算法的一个基本的假设是:一组数据由“内点”(inliers)和“外点”(outliers)组成,其中“内点”就是组成模型参数的数据,而“外点”就是不适合模型的数据。RANSAC算法的目标就是在一组含有少量“内点”,大量“外点”的数据中,估计出一个符合“内点”数据的模型。RANSAC算法基本思想假设存在一

随便推点

getordefault java_java – 使用getOrDefault()之后我应该使用put()还是putIfAbsent()?_蒋彬彬的博客-程序员秘密

Java8引入了那些不错的方法getOrDefault()和putIfAbsent(),允许编写如下代码:Map> itemsByFoo = ...List bars = itemsByFoo.getOrDefault(key, new ArrayList<>());bars.add(someNewBar);现在我想知道是否有很好的事实理由:itemsByFoo.put(key,...

Android系统签名_星空梦想plus的博客-程序员秘密_android系统签名

Android中的签名系统默认的四种签名类型:四组默认签名供Android.mk在编译APK使用:1、testkey:普通APK,默认情况下使用。2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。3、shared:该APK需要和home/contacts进程共享数据。4、media:该APK...

bootstrap时间选择器datetimepicker_汐儿今天学习了吗的博客-程序员秘密_bootstrap时间选择

时间选择器今天在修改页面详细设计时有一个时间选择器的查询框需求,简单记录一下。1.页面查询框代码<div class="col-md-5" style="flex-basis: 450px!important;"> <span class="form-span" >操作时间:</span> <!--指定 date标记-->

在tf.keras.layers.Conv3D中的input_shape 应该怎么输入_哈_哈,笑一个吧!的博客-程序员秘密

处理视频时,每个视频由37帧组成,每个图像的尺寸为 1001003,所有数据集的形状为【nums_of_videos,37,100,100,3】如果想要将这些数据通过tf.keras.layers.Conv3D()input_shape应该是什么?【100,100,37,3】来源:https://datascience.stackexchange.com/questions/90910/what-will-be-the-input-shape-of-tf-keras-layers-conv3d-

StringUtils判断字符串是否为空的方法_stujike123456的博客-程序员秘密_stringutils判断是否为空

publicstaticbooleanisEmpty(String str)判断某字符串是否为空,为空的标准是 str==null或 str.length()==0  下面是 StringUtils 判断是否为空的示例:StringUtils.isEmpty(null) =trueStringUtils.isEmpty("") =trueStringUtil...

nginx https代理node服务请求第三方接口时无响应 Error: Hostname/IP doesn‘t match certificate‘s altnames_舜岳的博客-程序员秘密

错误内容:解决方法:方案 1第三方发起请求的文件顶部加上下面这句代码:process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; //添加后可以访问 但浏览器依然会提示https不安全//request axios 请求写下面...方案 2 添加 rejectUnauthorized: falserequest请求时设置:let request = require( 'request' ).defaults({rejectUnauthorized

推荐文章

热门文章

相关标签