自然语言处理(NLP)入门学习资源清单
自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括:
1.句法语义分析:对于给定的句子,进行分词、词性标记、命名实体识别和链接、句法分析、语义角色识别和多义词消歧。
2.信息抽取:从给定文本中抽取重要的信息,比如,时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。涉及到实体识别、时间抽取、因果关系抽取等关键技术。
3.文本挖掘(或者文本数据挖掘):包括文本聚类、分类、信息抽取、摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。
4.机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。根据输入媒介不同,可以细分为文本翻译、语音翻译、手语翻译、图形翻译等。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。
5.信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可利用1,2,3的技术来建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。
6.问答系统: 对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。
7.对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。同时,为了体现个性化,要开发用户画像以及基于用户画像的个性化回复。
随着深度学习在图像识别、语音识别领域的大放异彩,人们对深度学习在NLP的价值也寄予厚望。再加上AlphaGo的成功,人工智能的研究和应用变得炙手可热。自然语言处理作为人工智能领域的认知智能,成为目前大家关注的焦点。很多研究生都在进入自然语言领域,寄望未来在人工智能方向大展身手。但是,大家常常遇到一些问题。俗话说,万事开头难。如果第一件事情成功了,学生就能建立信心,找到窍门,今后越做越好。否则,也可能就灰心丧气,甚至离开这个领域。这里针对给出我个人的建议,希望我的这些粗浅观点能够引起大家更深层次的讨论。
建议1:如何在NLP领域快速学会第一个技能?
我的建议是:找到一个开源项目,比如机器翻译或者深度学习的项目。理解开源项目的任务,编译通过该项目发布的示范程序,得到与项目示范程序一致的结果。然后再深入理解开源项目示范程序的算法。自己编程实现一下这个示范程序的算法。再按照项目提供的标准测试集测试自己实现的程序。如果输出的结果与项目中出现的结果不一致,就要仔细查验自己的程序,反复修改,直到结果与示范程序基本一致。如果还是不行,就大胆给项目的作者写信请教。在此基础上,再看看自己能否进一步完善算法或者实现,取得比示范程序更好的结果。
建议2:如何选择第一个好题目?
工程型研究生,选题很多都是老师给定的。需要采取比较实用的方法,扎扎实实地动手实现。可能不需要多少理论创新,但是需要较强的实现能力和综合创新能力。而学术型研究生需要取得一流的研究成果,因此选题需要有一定的创新。我这里给出如下的几点建议。
- 先找到自己喜欢的研究领域。你找到一本最近的ACL会议论文集, 从中找到一个你比较喜欢的领域。在选题的时候,多注意选择蓝海的领域。这是因为蓝海的领域,相对比较新,容易出成果。
- 充分调研这个领域目前的发展状况。包括如下几个方面的调研:方法方面,是否有一套比较清晰的数学体系和机器学习体系;数据方面,有没有一个大家公认的标准训练集和测试集;研究团队,是否有著名团队和人士参加。如果以上几个方面的调研结论不是太清晰,作为初学者可能不要轻易进入。
- 在确认进入一个领域之后,按照建议一所述,需要找到本领域的开源项目或者工具,仔细研究一遍现有的主要流派和方法,先入门。
- 反复阅读本领域最新发表的文章,多阅读本领域牛人发表的文章。在深入了解已有工作的基础上,探讨还有没有一些地方可以推翻、改进、综合、迁移。注意做实验的时候,不要贪多,每次实验只需要验证一个想法。每次实验之后,必须要进行分析存在的错误,找出原因。
- 对成功的实验,进一步探讨如何改进算法。注意实验数据必须是业界公认的数据。
- 与已有的算法进行比较,体会能够得出比较一般性的结论。如果有,则去写一篇文章,否则,应该换一个新的选题。
建议3:如何写出第一篇论文?
- 接上一个问题,如果想法不错,且被实验所证明,就可开始写第一篇论文了。
- 确定论文的题目。在定题目的时候,一般不要“…系统”、“…研究与实践”,要避免太长的题目,因为不好体现要点。题目要具体,有深度,突出算法。
- 写论文摘要。要突出本文针对什么重要问题,提出了什么方法,跟已有工作相比,具有什么优势。实验结果表明,达到了什么水准,解决了什么问题。
- 写引言。首先讲出本项工作的背景,这个问题的定义,它具有什么重要性。然后介绍对这个问题,现有的方法是什么,有什么优点。但是(注意但是)现有的方法仍然有很多缺陷或者挑战。比如(注意比如),有什么问题。本文针对这个问题,受什么方法(谁的工作)之启发,提出了什么新的方法并做了如下几个方面的研究。然后对每个方面分门别类加以叙述,最后说明实验的结论。再说本文有几条贡献,一般写三条足矣。然后说说文章的章节组织,以及本文的重点。有的时候东西太多,篇幅有限,只能介绍最重要的部分,不需要面面俱到。
- 相关工作。对相关工作做一个梳理,按照流派划分,对主要的最多三个流派做一个简单介绍。介绍其原理,然后说明其局限性。
- 然后可设立两个章节介绍自己的工作。第一个章节是算法描述。包括问题定义,数学符号,算法描述。文章的主要公式基本都在这里。有时候要给出简明的推导过程。如果借鉴了别人的理论和算法,要给出清晰的引文信息。在此基础上,由于一般是基于机器学习或者深度学习的方法,要介绍你的模型训练方法和解码方法。第二章就是实验环节。一般要给出实验的目的,要检验什么,实验的方法,数据从哪里来,多大规模。最好数据是用公开评测数据,便于别人重复你的工作。然后对每个实验给出所需的技术参数,并报告实验结果。同时为了与已有工作比较,需要引用已有工作的结果,必要的时候需要重现重要的工作并报告结果。用实验数据说话,说明你比人家的方法要好。要对实验结果好好分析你的工作与别人的工作的不同及各自利弊,并说明其原因。对于目前尚不太好的地方,要分析问题之所在,并将其列为未来的工作。
- 结论。对本文的贡献再一次总结。既要从理论、方法上加以总结和提炼,也要说明在实验上的贡献和结论。所做的结论,要让读者感到信服,同时指出未来的研究方向。
- 参考文献。给出所有重要相关工作的论文。记住,漏掉了一篇重要的参考文献(或者牛人的工作),基本上就没有被录取的希望了。
- 写完第一稿,然后就是再改三遍。
- 把文章交给同一个项目组的人士,请他们从算法新颖度、创新性和实验规模和结论方面,以挑剔的眼光,审核你的文章。自己针对薄弱环节,进一步改进,重点加强算法深度和工作创新性。
- 然后请不同项目组的人士审阅。如果他们看不明白,说明文章的可读性不够。你需要修改篇章结构、进行文字润色,增加文章可读性。
- 如投ACL等国际会议,最好再请英文专业或者母语人士提炼文字。
更多:
链接:https://www.zhihu.com/question/19895141/answer/149475410
十分钟学习自然语言处理概述
1 什么是文本挖掘?文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现。文本挖掘的准备工作由文本收集、文本分析和特征修剪三个步骤组成。目前研究和应用最多的几种文本挖掘技术有:文档聚类、文档分类和摘要抽取。 2 什么是自然语言处理?自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究人与计算机之间用自然语言进行有效通信的理论和方法。融语言学、计算机科学、数学等于一体的科学。
自然语言处理原理:形式化描述-数学模型算法化-程序化-实用化
语音的自动合成与识别、机器翻译、自然语言理解、人机对话、信息检索、文本分类、自动文摘等。 3 常用中文分词?中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,这里整理了一些中文分词工具。
StanfordNLP(直接使用CRF 的方法,特征窗口为5。)汉语分词工具(个人推荐) 哈工大语言云 庖丁解牛分词 盘古分词 ICTCLAS(中科院)汉语词法分析系统 IKAnalyzer(Luence项目下,基于java的) FudanNLP(复旦大学) 4 词性标注方法?句法分析方法?原理描述:标注一篇文章中的句子,即语句标注,使用标注方法BIO标注。则观察序列X就是一个语料库(此处假设一篇文章,x代表文章中的每一句,X是x的集合),标识序列Y是BIO,即对应X序列的识别,从而可以根据条件概率P(标注|句子),推测出正确的句子标注。 显然,这里针对的是序列状态,即CRF是用来标注或划分序列结构数据的概率化结构模型,CRF可以看作无向图模型或者马尔科夫随机场。 用过CRF的都知道,CRF是一个序列标注模型,指的是把一个词序列的每个词打上一个标记。一般通过,在词的左右开一个小窗口,根据窗口里面的词,和待标注词语来实现特征模板的提取。最后通过特征的组合决定需要打的tag是什么。 5 命名实体识别?三种主流算法,CRF,字典法和混合方法 1 CRF:在CRF for Chinese NER这个任务中,提取的特征大多是该词是否为中国人名姓氏用字,该词是否为中国人名名字用字之类的,True or false的特征。所以一个可靠的百家姓的表就十分重要啦~在国内学者做的诸多实验中,效果最好的人名可以F1测度达到90%,最差的机构名达到85%。 2 字典法:在NER中就是把每个字都当开头的字放到trie-tree中查一遍,查到了就是NE。中文的trie-tree需要进行哈希,因为中文字符太多了,不像英文就26个。 3 对六类不同的命名实体采取不一样的手段进行处理,例如对于人名,进行字级别的条件概率计算。 中文:哈工大(语言云)上海交大 英文:stanfordNER等
更多http://www.cnblogs.com/baiboy/p/learnnlp.html
从语言学到深度学习NLP,一文概述自然语言处理
首先第一部分介绍了自然语言处理的基本概念,作者将 NLP 分为自然语言理解和自然语言生成,并解释了 NLP 过程的各个层级和应用,这一篇论文很适合读者系统的了解 NLP 的基本概念。 第二描述的是基于深度学习的 NLP,该论文首先描述了深度学习中的词表征,即从 one-hot 编码、词袋模型到词嵌入和 word2vec 等,我们首先需要数字表征词汇才能进一步做自然语言处理。随后,本论文介绍了各种应用于 NLP 的模型,包括卷积神经网络、循环神经网络、长短期记忆和门控循环神经网络等,这一些模型加上其它如注意力机制那样的技巧就能实现十分强大的能力,如机器翻译、问答系统和情感分析等。 概念基础自然语言处理(NLP)近来因为人类语言的计算表征和分析而获得越来越多的关注。它已经应用于许多如机器翻译、垃圾邮件检测、信息提取、自动摘要、医疗和问答系统等领域。本论文从历史和发展的角度讨论不同层次的 NLP 和自然语言生成(NLG)的不同部分,以呈现 NLP 应用的各种最新技术和当前的趋势与挑战。 1 前言 自然语言处理(NLP)是人工智能和语言学的一部分,它致力于使用计算机理解人类语言中的句子或词语。NLP 以降低用户工作量并满足使用自然语言进行人机交互的愿望为目的。因为用户可能不熟悉机器语言,所以 NLP 就能帮助这样的用户使用自然语言和机器交流。 语言可以被定义为一组规则或符号。我们会组合符号并用来传递信息或广播信息。NLP 基本上可以分为两个部分,即自然语言理解和自然语言生成,它们演化为理解和生成文本的任务(图 1)。 图 1:NLP 的粗分类 语言学是语言的科学,它包括代表声音的音系学(Phonology)、代表构词法的词态学(Morphology)、代表语句结构的句法学(Syntax)、代表理解的语义句法学(Semantics syntax)和语用学(Pragmatics)。 NLP 的研究任务如自动摘要、指代消解(Co-Reference Resolution)、语篇分析、机器翻译、语素切分(Morphological Segmentation)、命名实体识别、光学字符识别和词性标注等。自动摘要即对一组文本的详细信息以一种特定的格式生成一个摘要。指代消解指的是用句子或更大的一组文本确定哪些词指代的是相同对象。语篇分析指识别连接文本的语篇结构,而机器翻译则指两种或多种语言之间的自动翻译。词素切分表示将词汇分割为词素,并识别词素的类别。命名实体识别(NER)描述了一串文本,并确定哪一个名词指代专有名词。光学字符识别(OCR)给出了打印版文档(如 PDF)中间的文字信息。词性标注描述了一个句子及其每个单词的词性。虽然这些 NLP 任务看起来彼此不同,但实际上它们经常多个任务协同处理。 2.NLP 的层级 语言的层级是表达 NLP 的最具解释性的方法,能通过实现内容规划(Content Planning)、语句规划(Sentence Planning)与表层实现(Surface Realization)三个阶段,帮助 NLP 生成文本(图 2)。 图 2:NLP 架构的阶段 语言学是涉及到语言、语境和各种语言形式的学科。与 NLP 相关的重要术语包括: 3. 自然语言生成 NLG 是从内在表征生成有含义的短语、句子和段落的处理过程。它是 NLP 的一部分,包括四个阶段:确定目标、通过场景评估规划如何实现目标、可用的对话源、把规划实现为文本,如下图 3。生成与理解是相反的过程。 图 3:NLG 的组件
更多:
https://www.jiqizhixin.com/articles/2017-08-21-5
|