跳转至

常用的NLP工具库

  1. spaCy 极其优化的NLP库,可与深度学习框架(如TensorFlow或PyTorch)一起运行。该库提供了大多数标准功能(标记化,PoS标记,解析,命名实体识别......),并且构建快速。spaCy也很好地与所有主要的深度学习框架接口,并预装了一些非常好的和有用的语言模型。下面所有的例子都是用Jupter运行过后的。 nlp-tookits_1.jpeg spaCy 例子

  2. Gensim 可扩展的统计语义,分析纯文本文档的语义结构,检索语义相似的文档。 nlp-tookits_2.jpeg Gensim Tutorials example

  3. Pattern Pattern是Python编程语言的Web挖掘模块。它具有数据挖掘工具(谷歌,Twitter和维基百科API,网络爬虫,HTML DOM解析器),自然语言处理(词性标注,n-gram搜索,情感分析,WordNet),机器学习(矢量)空间模型,聚类,SVM),网络分析和<canvas>可视化等功能。

  4. Natural Language Toolkit /NLTK NLTK是构建Python程序以使用人类语言数据的领先平台。它为50多种语料库和词汇资源(如WordNet)提供了易于使用的界面,还提供了一套用于分类,标记化,词干化,标记,解析和语义推理的文本处理库,用于工业级NLP库的包装器,和积极的讨论论坛。由于实践指南介绍了编程基础知识以及计算语言学的主题,以及全面的API文档,NLTK适用于语言学家,工程师,学生,教育工作者,研究人员和行业用户等。 NLTK适用于Windows,Mac OS X和Linux。最重要的是,NLTK是一个免费的,开源的,社区驱动的项目。 nlp-tookits_3.jpeg

  5. TextBlob TextBlob是一个用于处理文本数据的Python(2和3)库。它为常见的自然语言处理(NLP)任务提供了一致的API,例如词性标注,名词短语提取,分析等。 常见功能:

    • Noun phrase extraction
    • Part-of-speech tagging
    • Sentiment analysis
    • Classification (Naive Bayes, Decision Tree)
    • Language translation and detection powered by Google Translate
    • Tokenization (splitting text into words and sentences)
    • Word and phrase frequencies
    • Parsing
    • n-grams
    • Word inflection (pluralization and singularization) and lemmatization
    • Spelling correction
    • Add new models or languages through extensions
    • WordNet integration

    nlp-tookits_4.jpeg

  6. Polyglot 在某些方面与上面的的截然不同。虽然它具有类似的功能(标记化,PoS标记,字嵌入,命名性识别等),但Polyglot主要用于多语言应用程序。在同时处理各种语言的空间内,它提供了一些非常有趣的功能,例如语言检测和音译,这些功能在其他包中通常不那么明显。例如,如果我们想要找出给定文本的语言,我们可以在Polyglot中执行此操作: nlp-tookits_5.jpeg

  7. Vocabulary 词汇表是另一个相当小的Python库,它提供了一些非常有趣和专业的功能。顾名思义,词汇表基本上是Python模块形式的字典。准确地说,词汇表将为您提供给定单词的含义,同义词,反义词,词性,翻译,示例,发音和连字符。 nlp-tookits_6.jpeg

  8. PyNLPl PyNLPl,或简称为“菠萝”,是一种鲜为人知的NLP库,特别适用于读写NLP空间中常见(和不太常见)的文件格式。例如,如果您需要使用有时难以阅读和解析的FoLiA XML(Linguistic Annoation)或GIZA ++文件,PyNLPl可以派上用场。PyNLPl可以在一些相当具体的情况下为您节省大量时间。如果您发现自己处于需要使用FoLiA,GIZA,Moses,ARPA,Timble或CQL的情况下,请记住有一个友好的菠萝可以提供帮助。

  9. Stanford CoreNLP Python CoreNLP正在斯坦福大学的自然语言处理小组积极开发.该工具包提供了非常强大,准确和优化的技术,用于标记,解析和分析各种语言的文本。它还支持注释管道,并且易于扩展和访问。总的来说,CoreNLP是NLP工具包之一,已经并且肯定在生产中使用了很多。

  10. MontyLingua MontyLingua旨在让事情变得尽可能简单。您提供原始文本,您将收到对该文本的一些语义解释 - 开箱即用。它不是依赖复杂的机器学习技术,而是配备了所谓的“常识知识”,即关于日常情境的规则和知识,丰富了系统的解释。嗯,公平地说,这些规则是基于“开放思维常识”项目,该项目依赖于AI。

  11. Polyglot github Polyglot 支持对海量文本和多语言的处理。它支持对165种语言的分词,对196中语言的辨识,40种语言的专有名词识别,16种语言的词性标注,136种语言的情感分析,137种语言的嵌入,135种语言的形态分析,以及69中语言的翻译。

  12. BERT BERT 是一个基于双向 Transformer 的大规模预训练语言模型,用于对大量未标记的文本数据进行预训练,以学习一种语言表示形式,这种语言表示形式可用于对特定机器学习任务进行微调。BERT 被称为是 NLP 领域中里程碑的进展。BERT可以非常好地应用在Question Answer (QA,问答系统) 与阅读理解、搜索与信息检索(IR)、对话系统/聊天机器人(Dialog System or Chatbot)、文本摘要(生成式、抽取式)、文本分类、序列标注等领域。

这些工具用Python编写,也可用Java编写,由六个模块组成,这些模块提供标记化,标记,分块,短语提取,词典化和语言生成功能。

此外,https://pypi.org/search/?q=nlp 提供了大概500 个左右的NLP

一个新兴的NLP库类别涉及为各种深度学习框架提供更高级别的接口。例如,finch,提供TensorFlow的访问和模型的库。

其次,有各种非常有趣的库是超级专业的。举几个例子:CLTK是希腊语和拉丁语等经典语言的首选库。 PyTextRank是Mihalcea(2004)和其他人提出的TextRank算法/方法的直接实现。newspaper可以帮助您从网络上构建和分析报纸语料库。这种(高度)专业化的库(或现有库的附加组件,如textblob-de)在使用较少的“已知”(语言时也是不可或缺的。

第三,(标准)'数据科学'NLP能力库。例如,scikit-learn不仅提供了一些示例数据,还提供了一些非常有用的自然语言处理模型和算法。

2021 年,您应该添加到数据科学工具包中的 9 个新兴 Python 库

随着数据科学的不断发展和发展,新工具的出现是很自然的,特别是考虑到数据科学在过去有一些重要的进入障碍。

以下库分为三类:

  1. 模型部署
  2. 数据建模
  3. 探索性数据分析

1. 模型部署

Kedro

鉴于数据科学对计算机科学的依赖性极强,数据科学继续与软件工程实践越来越趋同,这并不奇怪。随着数据科学的不断发展,一些解决方案正在被制造出来,以帮助使数据科学解决方案更容易产品化。 这些解决方案之一包括Kedro。 Kedro是一个用于数据科学管道开发的工作流程工具,鼓励生产就绪的代码,并允许你为你的数据建立可移植的管道。总的来说,它应用软件工程原则,帮助你使你的代码更加标准化、可重复性和模块化。

Gradio

Gradio让你只需三行代码就能为你的机器学习模型建立和部署网络应用。它的作用与Streamlit或Flask相同,但我发现它更快、更容易部署模型。 Gradio因以下原因而有用。 - 它可以进行进一步的模型验证。具体来说,它允许你交互式地测试模型中的不同输入。 - 这是一个进行演示的好方法。 - 它很容易实现和发布,因为任何人都可以通过公共链接访问这个网络应用。

Streamlit

构建机器学习和数据科学应用和程序可能是一个困难的过程,而且往往过于复杂。 Streamlit是另一个流行的工具,被用来创建用户界面。它是一个开源的Python库,用来为数据科学和机器学习建立强大的、定制的网络应用。Streamlit与几个主要的库和框架兼容,如Latex、OpenCV、Vega-Lite、seaborn、PyTorch、NumPy、Altair等。

2. 数据建模

PyCaret

在数据科学的机器学习方面,有很多任务是我们想快速完成并立即得到答案的,但如果冗长的代码使我们陷入困境,就无法做到。 PyCaret是一个低代码的机器学习库,它允许你通过快速创建模型直接从想法跳到答案。这也意味着,你可以进行实验、估算缺失值、对分类数据进行编码,并比传统上更快地进行特征工程。

Prophet

时间序列是数据科学中的一个重要概念,每天都被用来对一系列情况进行有用的预测,例如,一个零售店的收入,或一个城市的犯罪率。Prophet是一个Python库,允许你创建时间序列模型,并将你的数据应用于其中,以获得自动更新的预测。 Prophet由Facebook开发,是一个非常强大的工具,特别是对于时间序列分析。

3. 探索性数据分析

Pandas Profiling

Pandas分析是一个Python库,可以在一行代码中完成你的标准EDA。它本质上是计算几个分析结果,并以报告的形式显示出来,向你展示诸如数据集的特征、变量属性、变量的相关性、缺失值、数据的分布等内容。 这就像实现以下内容一样简单。

1
2
3
from pandas_profiling import ProfileReport
profile = ProfileReport(df, title="Pandas Profiling Report")
profile

D-Tale

如果你是一个Excel专家,那么你会喜欢D-Tale。 D-Tale是一个Python库,它可以将Pandas DataFrame可视化,但更具体地说,它以高度互动的透视表的形式将其可视化 D-Tale的卖点是它的许多功能与Pandas Profiling相似,但也提供了与Excel数据透视表相关的功能,如条件格式化、数据排序、过滤数据等。

Autoviz

如果Pandas Profiling和D-Tale还不足以实现EDA和可视化的自动化,那么Autoviz(自动化的可视化)就和它一样好。就像它的名字一样,Autoviz用很少的几行代码把你的数据变成令人惊叹的演示。 Autoviz可以快速找到你的数据中的重要特征,并将其全部摊开在你面前,只需一行代码。这使得在大型数据集上工作很容易,并了解正在发生的事情,这样你可以更快地做出改变,同时对你的数据的清洁度印象深刻。

Plotly

不言而喻,图表和演示是数据科学的一个组成部分。图形不仅可以让你立即看到你什么时候破坏了什么,而且还可以让你强烈地感受到你的代码修改对你的数据产生什么影响。 Plotly绝对是构建可视化的一个必须知道的工具,因为它非常强大,易于使用,而且有一个很大的好处就是能够与可视化进行互动。 与Plotly一起的还有Dash,它是一个允许你使用Plotly可视化建立动态仪表盘的工具。Dash是一个基于网络的python界面,在这些类型的分析性网络应用中不再需要JavaScript,并允许你在线和离线运行这些图。