自然语言处理(NLP)是数据科学和人工智能的一个令人兴奋的领域,它涉及到教计算机如何从文本中提取意义。在本指南中,我们将访问Python自然语言包。这些包能处理一系列的任务,如词性(词性)标注、情感分析、文档分类、主题建模等等。
为什么只有5个包?
我们写的每一个指导与思想的实践者,实际上有几十个的NLP包…但一旦你掌握了其中的一些基础,你就可以覆盖所有重要的基地。这是一个固执己见的向导,它展示了我们发现最有用的5个Python
NLP库。
我需要学习下面的每一个包吗?
不,这要看你的使用情况而定。这是一个摘要:
我们建议NLTK仅作为一个教育和研究工具。它的模块化结构使它非常适合学习和探索NLP概念,但它不是用于生产的。
textblob基于NLTK库,它更易用。这是我们最喜欢的快速原型或构建应用程序库,不需要高度优化的性能。初学者应该从这里开始。
斯坦福大学的CoreNLP是一个Python包装java库。这是许多现有的生产系统,由于它的速度。
SpaCy是一个新的NLP的包,其宗旨是设计快速,精简,和便于生产。它并没有被广泛采用,但是如果您正在构建一个新的应用程序,您应该试一试。
GENSIM是最常用的主题模型和相似性检测包。它不是一个通用的NLP包,但是对于它处理的任务,它做得很好。
他们为什么是英雄?
因为他们勇敢!
征服者:NLTK
王子:textblob
佣兵:Standfordcorenlp
篡位者:Spacy
将军:gensim
征服者:NLTK
谈论Python中的nlp库,不能不提NLTK。它是最著名的Python
NLP库,它在这个领域中取得了令人难以置信的突破。NLTK负责征服许多文本分析的问题,NLTK也颇受教育与研究界的青睐。在自己的网站上,NLTK自称是“一个令人惊叹的自然语言库。”
在我们的经验中,关键词是“玩”。NLTK在50个语料库和词典,9个词干器,以及几十种可选的算法。它是一个学术研究者的主题公园。
然而,这也是NLTK一个主要的缺点。它是沉重的,滑滑的,它有一个陡峭的学习曲线。第二个主要缺点是缓慢而不是生产准备就绪。
接下来的3个图书馆将解决这些弱点。
资源
《使用Python进行自然语言处理》。
http://www.nltk.org/book/
《Dive into NLTK》教程文本处理详细位。
http://textminingonline.com/dive-into-nltk-part-i-getting-started-with-nltk
王子:textblob
textblob坐在巨人肩上,与此类似的另一个库是Pattern。事实上,我们推荐textblob而不是Pattern。
textblob使文本处理提供一个直观的界面,简单化的NLTK。因为它有一个温和的学习曲线,同时拥有惊人的功能,使其成为Python最受欢迎的自然语言库。
例如,假设你想找到一个文本的情感分数。你可以:
from textblob import TextBlob
opinion = TextBlob("EliteDataScience.com is dope.")opinion.sentiment
默认情况下,情绪分析仪是从模式库的patternanalyzer。但如果你想使用朴素贝叶斯分析?你可以很容易地转换到一个使用nltk训练好的analyzer。
from textblob import TextBlobfrom textblob.sentiments import
NaiveBayesAnalyzer
opinion = TextBlob("EliteDataScience.com is dope!",
analyzer=NaiveBayesAnalyzer())opinion.sentiment
textblob是一种简单、有趣的库,使得文本分析是一种轻松愉快的事情。我们可以用textblob对付所有NLP的初始原型。
资源
TextBlob Documentation - 官方文档和快速指南
https://textblob.readthedocs.io/en/dev/index.html
《Natural Language Processing Basics with TextBlob》 - TextBlob短期速成教程
http://rwet.decontextualize.com/book/textblob/
雇佣军:Stanford corenlp
Stanford corenlp库是自然语言分析生产准备阶段的工具套件。它包括词性(POS)标注,实体解析,模式识别,学习等。
“雇佣军”实际上是用Java写而不是Python写的。
许多组织使用corenlp来实现其产品。它几乎能够准确的支持几个主要的语言。
资源
CoreNLP Documentation - 官方文档
http://stanfordnlp.github.io/CoreNLP/index.html
List of Python wrappers for CoreNLP - CoreNLP最新更新
https://stanfordnlp.github.io/CoreNLP/other-languages.html#python
篡位者:Spacy
Spacy是一个新生事物,它一经推出就轰动业界。市场定位于运行效率的Python自然语言库。
Spacy是很轻很小的,它的哲学是对每一个问题只提出一种算法(最好的一种)。你不必做出选择,你可以专注于富有成效。
内核是Cpython,所以Spacy运行很快。它的主要缺点是它目前只支持英语。
Spacy是很新的,所以其支持社区不象其他库那么大。然而,它的NLP的方法是如此引人注目,似乎未来可以取代NLTK。
如果你正在建设一个新的应用程序或改造旧的(你只需要英语的支持),那么我们强烈建议使用Spacy。
资源
spaCy Documentation - 官方文档和快速指南 https://spacy.io/docs/
Intro to NLP with SpaCy - 简洁指南和案例
https://nicschrading.com/project/Intro-to-NLP-with-spaCy/
将军:gensim
最后但并非最不重要的,我们有gensim库。gensim不解决所有nlp领域,它只做一部分,并将其做好。你不会把你的海军上将派到陆战场景,同理你也不会用gensim去解决nlp的所有领域和情景。
gensim是一个很好的主题建模和文档相似性分析优化库。在这里列出的Python NLP库中,它是最专业的。
即便如此,这还是一个有价值的工具来添加你的曲目。它的主题建模算法,如潜在的狄利克雷分配(LDA)实现,是所有库中最棒的。此外,它强健、高效、可扩展。
另外,子字段语义分析(或主题建模)是现代自然语言处理中最令人兴奋的领域之一。
资源
gensim Documentation - 官方文档
https://radimrehurek.com/gensim/