自然语言处理怎么最快入门?

  • 自然语言处理怎么最快入门?-图1
5回答·236阅读
宁教授网络科普基地

2022年10月28日·网络空间北京市国际科技合作基地主任 北科大教授

自然语言处理入门难度不大,前提是掌握好了深度学习与机器学习的知识。所以首先要学的是深度学习的基础知识,搞明白神经网络的底层原理以后入门这种深度学习内容就快了许多。

建议直接上代码,搞明白一个代码以后基本上算入门一半了,像CNN、RNN、LSTM等基本算法,等你都搞明白以后就看导师的研究方向与背景,将自己的研究内容与深度学习相结合就可以快速入门了。

程序员茶馆

2023年02月21日

想要快速入门自然语言处理(NLP),以下是几个建议:

  1. 学习基础知识:首先需要掌握自然语言处理的基础知识,如语言学、机器学习和统计学等。可以从相关的书籍、课程或在线教程中学习这些基础知识。
  2. 掌握常见工具:NLP领域有许多常用的工具,如NLTK、spaCy、Stanford NLP等,掌握这些工具可以加速学习和实践。可以在官方网站上查看文档并进行练习。
  3. 学习实践项目:学习理论知识之后,最好通过实践项目来加深对知识的理解和应用能力。可以参考一些NLP项目,如情感分析、文本分类、命名实体识别等,并尝试使用相关的工具和技术来完成项目。
  4. 参加社区和活动:参加相关的社区和活动可以与其他人交流,分享经验和知识,获取反馈和建议,并了解最新的发展趋势和技术进展。

总之,快速入门NLP需要学习基础知识、掌握常见工具、学习实践项目和参加相关社区和活动,这样可以提高学习效率并加速进步。

NLP的软件

以下是一些常用的自然语言处理软件:

  1. NLTK:Python自然语言处理工具包,提供了大量的文本处理库和语料库,适合入门学习和快速原型开发。
  2. Spacy:一个快速高效的自然语言处理库,适合用于大规模的文本处理,支持多种自然语言的处理,包括英语、德语、法语、意大利语、荷兰语、西班牙语、葡萄牙语和希腊语。
  3. Stanford CoreNLP:斯坦福大学的自然语言处理软件,提供了多种功能,包括分词、词性标注、句法分析、命名实体识别、情感分析等。
  4. Gensim:一个用于主题建模、相似性分析等自然语言处理任务的Python库。
  5. OpenNLP:Apache开源的自然语言处理工具包,提供了分词、词性标注、句法分析、命名实体识别等多种功能。
  6. spaCytext:spaCytext是一个基于Spacy的自然语言处理工具包,用于实现文本分类、实体识别、关系抽取、文本聚类等任务。
  7. TextBlob:一个Python库,提供了简单易用的API,用于实现情感分析、主题提取、情感分类等任务。

这些软件都有自己的特点和适用场景,根据具体需求选择合适的工具进行使用。

NLP书籍推荐

以下是几本经典的自然语言处理(NLP)著作:

  1. 《自然语言处理综论》(Speech and Language Processing):由 Daniel Jurafsky 和 James H. Martin 合著,介绍了自然语言处理的基础概念、技术和应用。
  2. 《统计自然语言处理基础》(Foundations of Statistical Natural Language Processing):由 Christopher D. Manning 和 Hinrich Schütze 合著,讲解了自然语言处理中的统计方法和基础技术。
  3. 《语言计算》(Language and Computation):由 Chris Manning 和 Hinrich Schütze 合著,介绍了计算语言学的基本概念和技术,并通过大量实例和练习进行了深入阐述。
  4. 《自然语言处理综合应用》(Handbook of Natural Language Processing):由 Nitin Indurkhya 和 Fred J. Damerau 合著,系统地介绍了自然语言处理的各个领域,包括语音识别、文本分类、信息检索等等。
  5. 《自然语言处理与计算语言学导论》(An Introduction to Natural Language Processing and Computational Linguistics):由 Bhuvana Narasimhan 和 Hema A. Murthy 合著,介绍了自然语言处理和计算语言学的基本理论、方法和应用。

这些书籍都是经典的自然语言处理著作,可以帮助读者深入理解NLP的基本概念、技术和应用,是学习NLP的好材料。

NLP的相关知识领域

学习NLP需要掌握以下几个方面的知识:

  1. 自然语言处理基础:包括语言学、计算机科学、数学和统计学等方面的基础知识。
  2. 机器学习:NLP是一个典型的机器学习领域,因此需要掌握机器学习的基本概念、算法和技术。
  3. 深度学习:近年来,深度学习技术在NLP领域中的应用非常广泛,因此需要学习深度学习的基本概念和相关算法。
  4. 计算语言学:计算语言学是NLP中的重要分支,它研究如何用计算机模拟人类语言的产生和理解过程,因此需要学习计算语言学的基本概念和技术。
  5. 文本挖掘:文本挖掘是从大量文本数据中挖掘有用信息的技术,它与NLP密切相关,因此需要学习文本挖掘的基本概念和技术。
  6. 语音识别:语音识别是NLP的一个分支,它研究如何让计算机识别人类的语音,因此需要学习语音识别的基本概念和技术。
  7. 知识图谱:知识图谱是一种将人类知识组织起来的方法,它与NLP密切相关,因此需要学习知识图谱的基本概念和技术。

NLP开源社区

以下是一些常见的NLP开源社区:

  1. Natural Language Toolkit (NLTK): 这是一个Python库,提供了许多NLP相关的工具和数据集。它是一个非常流行的NLP开源项目,可以帮助用户快速开发NLP应用程序。
  2. Apache OpenNLP: 这是一个Apache基金会支持的开源项目,提供了一些NLP工具,例如命名实体识别、词性标注、句法分析等。它是一个强大的NLP库,可以在Java和.NET平台上运行。
  3. Stanford CoreNLP: 这是斯坦福大学开发的一个NLP工具包,包括词性标注、命名实体识别、句法分析、情感分析等。它是一个Java库,但也有Python、Ruby、Perl等语言的绑定。
  4. spaCy: 这是一个用于Python的NLP库,提供了许多常用的NLP工具,例如分词、词性标注、句法分析等。它是一个快速、高效的库,适合处理大规模的文本数据。
  5. Gensim: 这是一个Python库,用于处理自然语言处理和文本分析。它包括了一些常用的NLP算法,例如词向量、主题模型等。

这些NLP开源社区都有活跃的社区支持和文档,可以帮助您更好地学习和使用NLP技术。

技术宅老夏

2017年11月30日

建议1:如何在NLP领域快速学会第一个技能?

我的建议是:找到一个开源项目,比如机器翻译或者深度学习的项目。理解开源项目的任务,编译通过该项目发布的示范程序,得到与项目示范程序一致的结果。然后再深入理解开源项目示范程序的算法。自己编程实现一下这个示范程序的算法。再按照项目提供的标准测试集测试自己实现的程序。如果输出的结果与项目中出现的结果不一致,就要仔细查验自己的程序,反复修改,直到结果与示范程序基本一致。如果还是不行,就大胆给项目的作者写信请教。在此基础上,再看看自己能否进一步完善算法或者实现,取得比示范程序更好的结果。

建议2:如何选择第一个好题目?

工程型研究生,选题很多都是老师给定的。需要采取比较实用的方法,扎扎实实地动手实现。可能不需要多少理论创新,但是需要较强的实现能力和综合创新能力。而学术型研究生需要取得一流的研究成果,因此选题需要有一定的创新。我这里给出如下的几点建议。

先找到自己喜欢的研究领域。你找到一本最近的ACL会议论文集, 从中找到一个你比较喜欢的领域。在选题的时候,多注意选择蓝海的领域。这是因为蓝海的领域,相对比较新,容易出成果。

充分调研这个领域目前的发展状况。包括如下几个方面的调研:方法方面,是否有一套比较清晰的数学体系和机器学习体系;数据方面,有没有一个大家公认的标准训练集和测试集;研究团队,是否有著名团队和人士参加。如果以上几个方面的调研结论不是太清晰,作为初学者可能不要轻易进入。

在确认进入一个领域之后,按照建议一所述,需要找到本领域的开源项目或者工具,仔细研究一遍现有的主要流派和方法,先入门。

反复阅读本领域最新发表的文章,多阅读本领域牛人发表的文章。在深入了解已有工作的基础上,探讨还有没有一些地方可以推翻、改进、综合、迁移。注意做实验的时候,不要贪多,每次实验只需要验证一个想法。每次实验之后,必须要进行分析存在的错误,找出原因。

对成功的实验,进一步探讨如何改进算法。注意实验数据必须是业界公认的数据。

与已有的算法进行比较,体会能够得出比较一般性的结论。如果有,则去写一篇文章,否则,应该换一个新的选题。

建议3:如何写出第一篇论文?

接上一个问题,如果想法不错,且被实验所证明,就可开始写第一篇论文了。

确定论文的题目。在定题目的时候,一般不要“…系统”、“…研究与实践”,要避免太长的题目,因为不好体现要点。题目要具体,有深度,突出算法。

写论文摘要。要突出本文针对什么重要问题,提出了什么方法,跟已有工作相比,具有什么优势。实验结果表明,达到了什么水准,解决了什么问题。

写引言。首先讲出本项工作的背景,这个问题的定义,它具有什么重要性。然后介绍对这个问题,现有的方法是什么,有什么优点。但是(注意但是)现有的方法仍然有很多缺陷或者挑战。比如(注意比如),有什么问题。本文针对这个问题,受什么方法(谁的工作)之启发,提出了什么新的方法并做了如下几个方面的研究。然后对每个方面分门别类加以叙述,最后说明实验的结论。再说本文有几条贡献,一般写三条足矣。然后说说文章的章节组织,以及本文的重点。有的时候东西太多,篇幅有限,只能介绍最重要的部分,不需要面面俱到。

相关工作。对相关工作做一个梳理,按照流派划分,对主要的最多三个流派做一个简单介绍。介绍其原理,然后说明其局限性。

然后可设立两个章节介绍自己的工作。第一个章节是算法描述。包括问题定义,数学符号,算法描述。文章的主要公式基本都在这里。有时候要给出简明的推导过程。如果借鉴了别人的理论和算法,要给出清晰的引文信息。在此基础上,由于一般是基于机器学习或者深度学习的方法,要介绍你的模型训练方法和解码方法。第二章就是实验环节。一般要给出实验的目的,要检验什么,实验的方法,数据从哪里来,多大规模。最好数据是用公开评测数据,便于别人重复你的工作。然后对每个实验给出所需的技术参数,并报告实验结果。同时为了与已有工作比较,需要引用已有工作的结果,必要的时候需要重现重要的工作并报告结果。用实验数据说话,说明你比人家的方法要好。要对实验结果好好分析你的工作与别人的工作的不同及各自利弊,并说明其原因。对于目前尚不太好的地方,要分析问题之所在,并将其列为未来的工作。

结论。对本文的贡献再一次总结。既要从理论、方法上加以总结和提炼,也要说明在实验上的贡献和结论。所做的结论,要让读者感到信服,同时指出未来的研究方向。

参考文献。给出所有重要相关工作的论文。记住,漏掉了一篇重要的参考文献(或者牛人的工作),基本上就没有被录取的希望了。

写完第一稿,然后就是再改三遍。

把文章交给同一个项目组的人士,请他们从算法新颖度、创新性和实验规模和结论方面,以挑剔的眼光,审核你的文章。自己针对薄弱环节,进一步改进,重点加强算法深度和工作创新性。

然后请不同项目组的人士审阅。如果他们看不明白,说明文章的可读性不够。你需要修改篇章结构、进行文字润色,增加文章可读性。

如投ACL等国际会议,最好再请英文专业或者母语人士提炼文字。





请大家不要吝惜手里的“邀请”,让我们在分享中共同进步。

djdbupt

2017年11月30日

首先,项目导向,通过做一个项目积累相关经验!举个例子,针对文本分类项目,首先做数据预处理,然后分词,然后用bow或者word2vec抽取特征,然后用相关模型晕分类或者聚类!如果深入下去,相关的主题模型之类也可以套!在项目深入过程中,会遇到各种问题,遇到问题后,再去解决问题,很快就会入门!然后多读顶会论文,了解最新动向,像ACL,emnlp这些都可以深入去读!还有一些经典的模型也要去调研!随着时间积累,一定会更好

人民邮电出版社

2019年11月08日·人民邮电出版社有限公司


非科班出身,自学撸出中文分词库HanLP,在GitHub标星1.5万,成为最受欢迎的自然语言处理项目。他将学习经验总结成书《自然语言处理入门》,帮助小白快速入门NLP。

针对题主的提问,HanLP自然语言处理类库的开发者何晗的经验很值得借鉴。

截至 2019 年 11月初,HanLP项目在 GitHub Star 数达到了 15.6 K,超过了宾夕法尼亚大学的 NLTK、斯坦福大学的 CoreNLP。

贴上GitHub地址:https://github.com/hankcs/HanLP

何晗在开发这款 NLP 工具包时,还是上海外国语大学一名日语专业的大二学生,HanLP项目脱胎他大学时接的一份兼职,何晗也因缘从一个非科班专业的小白逐步成长为NLP领域的专家。如今,正在攻读CS博士的他(研究方向:句法分析、语义分析与问答系统),结合自己的学习历程和HanLP的开发经验创作出版了《自然语言处理入门》一书,得到了周明、刘群、王斌等业内顶级 NLP 专家的推荐。

从着手开发HanLP,到HanLP达到工业使用的水准,何晗对自学NLP有深刻的见解。如果用一句话来总结,那就是:自顶而下,从工程去切入,由应用层往下面的基础层拓展,递归补充理论知识,才能事半功倍。以下入门NLP的建议,皆来自于何晗的经验,分享给像题主这样的初学者,希望能对大家有所启发。

一、初学者,请避开自学NLP的常见误区
  • 有的初学者排斥基础理论——认为学校教的都是没用的,公司里都用不到;
  • 有的初学者对基础理论敬而远之——认为理论太高深了,自己基础不好,学了也白学;
  • 有的初学者,特别是已经工作的程序员,基本方向正确但学习路径错误,比较容易走极端:
    • 在工作很忙的情况下,只是抱着经典书籍苦啃,直到筋疲力尽项目也毫无进展,从而丧失了学习NLP的兴趣;
    • 或者,俗称调库小能手,跟风潮流,缺少理论基础,缺乏独立思考能力(比如,认为深度学习最牛,其他的基础理论都是垃圾;认为CNN/RNN/BERT会调参就行了)。

而实际上,自然语言处理是计算机科学、人工智能和语言学学科的交集,这三方面的学科知识都是需要储备的,基础理论的学习必不可少。但很多初学者都是在工作之后才入坑NLP,既难以静下心来啃书啃课,又缺少很好的老师传授知识经验。所以,有效可行的入门方式就是从工程切入,遵循这样的逻辑:延迟加载,只在使用的时候才去加载必要的资料:

  • 你首先看到的是一个摸得着的实际问题,为了解决该问题才去接触一个具体的方案;
  • 为了理解这个方案,才会引入必要的背景知识;
  • 为了实现这个方案,才会引入相关细节;
  • 为了克服这个方案的问题,才会过渡到新的方案。
二、想快速入门NLP,边学边做疗效好

何晗入门NLP,读过的经典书有:《统计自然语言处理》(宗成庆 著)(对应语言学知识)、《统计学习方法》(李航 著)(对应人工智能知识),《挑战程序设计竞赛》(秋叶拓哉、盐田阳一、北川宜稔 著)(对应计算机算法知识)。

不过,在看经典书籍的过程中,他发现,学习自然语言处理并不需要完全把这几本书看透,最好是可以边看书边做项目。这些书都是非常牛的好书,然而可惜的是,看完书中的章节,不知该如何应用其中的知识点,即使实现了文章中提到的模型,也很难直接将其运用于工程项目。

想必很多初学者都面临类似的学习困惑。为了解决这个问题,何晗动手写了《自然语言处理入门》,目的就是希望学习者看完一章后,便可以将知识点直接用于项目,适合NLP初学者入门并快速布置到生产环境中。成效快,痛苦小,疑问少。

何晗在《自然语言处理入门》一书中,以自己的HanLP开源项目为案例,代码对照公式讲解每一个算法每一个模型,让入门者带着工程思维理解NLP的知识要点,试图在目前市面上艰深晦涩的教科书和简单的入门书之间作出平衡。

《自然语言处理入门》带领学习者从基本概念入手。逐步介绍中文分词、词性标注、命名实体识别、信息抽取、文本聚类、文本分类、句法分析这几个热门问题的算法原理和工程实现。通过对多种算法的讲解和实现,比较各自的优缺点和适用场景。这些实现并非教学专用,而是生产级别的成熟代码,可以直接用于实际项目。

在理解这些热门问题的算法后,这本书会引导学习者根据自己的项目需求拓展新功能,最终达到理论和实践上的同步入门。

何晗认为,NLP的学习路径,应该尊重一般人的认知规律,而不是学术上的纲目顺序,以此为宗旨来编排图书的内容。因此,面向普通程序员,这本书内容分为以下三大部分:

第一部分介绍一些字符串算法,让普通程序员从算法的角度思考中文信息处理。

第二部分由易到难地讲解一些常用的机器学习模型,让算法工程师晋级为机器学习工程师。由中文分词贯穿始终,构成一种探索式的递进学习。这些模型也并非局限于中文分词,会在第三部分应用到更多的自然语言处理问题上去。

第三部分新增了许多与文本处理紧密相关的算法,让机器学习工程师进化到自然语言处理工程师。特别地,最后一章介绍了当前流行的深度学习方法,起到扩展视野、承上启下的作用。学习者可根据自身情况,灵活跳过部分章节。

何晗在自学过程中走过不少弯路,深知数学语言的艰深晦涩,并且痛恨罗列公式故作高深的文章,所以他在书中只保留了必不可少的公式和推导,并且公式与代码相互印证。配套代码由Java和Python双语言写成,与GitHub上最新代码同步更新,所以你只要具备基本的编程经验,就可以跟随书本零起点入门。

此外,何晗还总结出一份最为详尽的NLP+ML“双生树”思维导图,导图中的关联知识点不仅涵盖NLP领域的核心知识,甚至涉及许多前沿研究和应用,印刷尺寸宽60cm,高74cm,随书附赠供学习者参考。

三、进阶NLP的学习资料和工具推荐
  • 推荐读这些经典书籍:
  • 多读论文,推荐用Google Scholar和Papers检索:
  • 克服语言障碍,推荐用欧路词典:
  • 追踪前沿动态,推荐NLP-progress,在各项NLP任务上的排行榜

网址:https://nlpprogress.com/

  • 一个中肯的建议:NLP没有通用的解法,算法不够,语料来补
  1. 算法不是万能的。(想想:一两个百分点对实际业务有多少帮助,又增加了多少成本?)
  2. 不要完全相信论文。(a. 不要相信不公开源代码的论文; b. 不要相信公开源代码但数据预处理作假的论文; c. 即使能跑出作者宣称的分数,请考虑:模型是否能泛化到你的行业领域? 又增加了多少成本?)
  3. 语料极其重要。(a. 语料几乎可以把准确率提升到你期望的任何水准,只要数量质量足够; b. 目前通用语料几乎都是新闻,谁能标注出行业语料,谁就是大王; c. 深度学习时代,无标注的纯文本语料也大有用场; d. 软件工程2.0:用数据编程。)

没有更多内容了