当前自己在自然语言处理领域探索,但总觉得有些迷茫,这个领域太大了,有些无从下手,目前看的论文也比较杂乱,有命名实体识别、基于知识库的问答系统、阅读理解等。同时自己的实验室之前又没有人做过这个方向,老师对该领域也不是很了解。所以想咨询下,目前该领域有哪些方向适合自己一个人独立进行研究?


我来猜一猜motivation叭。题主是不是正在转行做NLP,资源有限,想找一个方向做一定的深度,最好能独立水水paper或者打打比赛做点项目,进而找一份NLP相关的工作?( ̄? ̄)

如果是的话,就要兼顾研究难度和工业界缺口了。

从入门难度,对计算资源的需求以及工业界缺口的角度看,个人比较推荐的路线是

先入门分类,后熟悉匹配,进而根据个人兴趣去做对话/问答/推荐。

原因很简单,文本分类是NLP里最简单的任务,无论理论还是工程实现难度。而从分类到匹配又是十分平滑的,而且分类和匹配任务都有小中大不同规模的公开数据集,也有小中大不同复杂程度的代表模型,预处理相对容易很多,理论也不难,开源资料、博客之类的又很多,工业界还需求超大(对话、问答、检索、推荐、反作弊等场景都有一堆分类和匹配需求)。自己花点时间多看多写,基础不是太差的话半年到一年就可以独立炼丹,刷刷榜单了。

有了分类和匹配的基础,做对话、问答和推荐等方向非常容易。如果数据预处理做的比较熟,对数据挖掘兴趣更高一些,可以重点了解下推荐、反作弊/风控等场景下的NLP问题;如果对检索系统或问答对话更感兴趣,可以重点了解下检索式问答(检索+排序的框架就好,不用著急碰机器阅读理解问题)、检索式闲聊机器人、FAQ系统怎么做;精力旺盛的还可以简单了解一下任务型对话系统和机器阅读理解,不过这两个问题不建议一个人瞎搞。

然后说下分类和匹配可以打卡的几个点

文本分类来说,熟悉一下bow、ngram、tfidf这类基本概念,了解下NLP里常用的特征,配合NB、SVM就能轻松体验特征工程解决文本分类的基本套路;熟悉深度学习框架后,textcnn、fasttext、adasent、dpcnn甚至bert都可以拿来跑下,研究下代码;此外,文本分类数据集大多结构简单,还可以顺便学点基本的正则语法做做简单的文本预处理(可能都用不到正则)。

入门分类后,做匹配任务就是多了一个输入的文本分类,主要就是额外理解一下花式attention,以及区分下pointwise,pairwise甚至listwise的训练方式,提高一下写复杂网路和调参的能力。尤其可以跑实验感受一下query-query匹配与query-response匹配有什么不同,思考一下为什么,加深对NLP和深度学习理论的理解,从无脑炼丹走向有理有据。这时候该怎么继续往下走也不用我多说啦

匹配任务也可以搞定了之后,就要多多关注其他方向的东西啦,比如序列标注问题里的CRF是什么,机器翻译里提出的transformer的设计细节,语义表示相关的ELMo、BERT等为什么work,生成相关的VAE、copy机制等在解决什么问题,以及对抗样本、多任务学习、迁移学习、FSL、NAS、灾难性遗忘与持续学习等ML问题等。当然啦,有条件熟悉一下多机多卡训练更好了,这都是在工业界做NLP必备的工程能力。

最后,加油嗷(^_?)?☆


对专业选题心有迷茫,一般都是获取资料太少太浅。对此不太可能有人大手一挥如仙人指路般,你就走向人生巅峰。对NLP而言,建议你至少浏览过去三年以来的ACL、EMNLP、NAACL论文,做好总结笔记,到底是哪个题目你比较感兴趣,自然会浮现出来。


独立研究(无导师 无实验室 纯unspervised),当然首选 文本分类 or 情感分析 (判别式任务),相对其他nlp任务(尤其生成式),这个是相对好上手容易看到直观效果的。而且业界公司也有实际需求,方便找实习,不用太多linguistic知识也用不到什么高级machine learning理论。(经 @Cyunsiu To 评论提醒,分类任务benchmark都比较高所以想要发漂亮论文还是比较难的)可以按照这几个顺序去实现一下帮助自己理解:

fastText(

Bag of Tricks for Efficient Text Classification?

arxiv.org

),

TextCNN(

Convolutional Neural Networks for Sentence Classification?

arxiv.org

),

TextRNN(

https://towardsdatascience.com/sentence-classification-using-bi-lstm-b74151ffa565?

towardsdatascience.com

),

RCNN(

Lai?

www.aaai.org

),

CharCNN(

https://papers.nips.cc/paper/5782-character-level-convolutional-networks-for-text-classification.pdf?

papers.nips.cc

),

Seq2seq With Attention(

Text Classification Research with Attention-based Recurrent Neural Networks?

univagora.ro图标

),

Transformer(

Attention Is All You Need?

arxiv.org

)


其实都比较适合,不管是做自然语言理解任务,还是做自然语言生成任务,如果是刚入门,建议找经典的论文搭配源码,例如TextCNN或者seq2seq,把代码跑多几遍,并且尝试注释几遍,在这期间需要产出数篇技术博客,可以是关于演算法的,关于代码复现的以及关于一些编程技巧的。

这一阶段完成后,就开始梳理研究趋势,也就是经典论文的后续。例如seq2seq的后续研究,需要注意后续研究是在经典论文的基础上做出了那些改进,解决的是什么问题。

这一步完成后,就可以看最新的研究及实现,例如ACL2019里面自己看完觉得可以进一步拓展研究的,那就开始研究吧。

最后回到问题,建议做自然语言理解的某个小方向吧,例如情感识别、舆情分析,毕竟做生成任务麻烦很多~


其实……哪个都可以。我觉得


推荐阅读:
相关文章