查看原文
其他

Python NLP中的五大英雄

2017-09-11 大邓 大邓带你玩python

自然语言处理(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/


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存