本人现在某高校就读研究生,今年研二,加上保研那年的话,对NLP接触的时间也有两年半。现在决定把前几年做的一些关于NLP的工作汇总在这里,自己也做一个知识性的梳理吧。之前虽然没有写博客的习惯,但会把一些相关的经验和代码记在云笔记上,所以也算不上为了找工作临时抱佛脚吧。文笔不咋样,本人目前仅仅是研究生一枚,接下来的很多东西也许说的不是很严谨,如果不小心被哪位技术大佬看到了,不要嫌弃有什么错误请留言指正。
于我而言,NLP更像是一种知识体系,我大致接触过语音、知识图谱和对话相关的一些项目,有些也并不是很深入。但总的来说NLP的任务大致可以分为几个层面吧:
上图是最近Google在embedding工作上的杰作——bert,这里主要借用这副图来说明下NLP的任务分类,关于bert的部分,我后续会详细说明。总的来说NLP有:
1.word level:序列标注任务(上图d),分词、词性标注、命名实体识别都属于序列标注任务,所谓序列标注就是对一个序列的每个部分(可以是词,可以是字)进行分类,上图d就是一个实体识别任务(我们后续会详细讲到),实际上我感觉语音识别如果是在帧层面上进行音素分类的话,也可以作为一种序列标注任务。
2.sentence level :我认为只要是在句子层面分类的任务都可以归结为该类,如文本分类,情感识别,关系抽取,语音情感识别等。在这里注意关系抽取是知识图谱中将文本数据进行结构化的一种方法,实际上它离不开实体和句子,最后的分类标签还是针对这三者而来的,所以我把它归结到sentence level任务中。
3.sentence-sentence level:这一类问题是NLP中最最常见,也是研究最广泛的一类问题,即序列和序列之间的分类,这种分类根据分类形式的不同又可以细分。例如机器翻译,问答,对话都是sequence to sequence类型的问题,而对于阅读理解,smilarity等任务都是通过针对sentences pair进行分类,拿阅读理解上图c,就是通过模型“理解”完Question和Paragraph后,然后针对Paragraph,找出start和end的位置(即对这两个token做分类)得到的start和end中间一段就是答案。再比如ai challenger2018中的观点型阅读理解就是上图a中的例子,针对的是sentences pair建模,来分类。
给我的感觉是,学NLP并不要太局限在一个方向里,很多任务所运用的到处理问题的框架都是类似的,就好比不同的场景要搭建不同的建筑,但不同的建筑所用的材料都是想通的,知识因为场景的不同会有所区别,之前说到的知识体系就是这个意思。当然NLP的任务形式还有其他的一些内容,例如句法分析,语义角色标注,知识图谱中的知识表示模型等等又不是上述的一些形式,在这里由于这些内容本人没咋接触,就不进行说明了。
另外,这里列几个NLP相关的会议:
•ACL https://acl2017.wordpress.com/2017/04/05/accepted-papers-and-demonstrations/
•EMNLP
•COLING
•NAACL
AI相关:
•IJCAI
•AAAI
语音:
Interspeech
下面的内容我可能更多的关注在Deep Learning的方法上,除了情感识别的部分我会分享整个项目的实践过程里面包含一些机器学习的代码,这段时间由于帮老师整理机器学习的课件,所以之后关于机器学习的原理部分也会抽空做一个梳理。
既然是系列文章,在这里还是要列个大纲:
(一) NLP个人技术实战心得——开篇
(二)浅谈语言模型与词向量
(三)分词技术及开源分词器
(四)序列标注任务——命名实体识别
(五)结构化数据抽取——关系抽取
(六)金融知识图谱——基于中财网的图谱搭建
(七)简单图谱查询——利用AIML进行图谱问答
(八)sequence to sequence
(九)再谈embedding——bert详解
(十)语音情感识别项目实战
先就列上面几个吧,主要也是根据我这两年读研的过程中接触到的一些项目来的。列完之后我自己也有点懵,看似不怎么系统,但实际上我自己感觉在算法原理这块几乎都是想通的,每个部分都会有原理讲解以及我的github代码链接,看到的朋友请留个星鼓励下!!