Python生态系统中5个NLP工具库

标签:#NLP##工具# 时间:2022/04/10 20:23:13 作者:小木

Python是目前最流行的编程语言,也是开放生态做得最好的编程语言之一。大多数深度学习框架、机器学习的框架都有很优秀的Python版本。这篇博客主要为大家介绍5个python生态系中解决NLP任务的框架。

[TOC]

一、宾夕法尼亚大学的NLTK(Natural Language Toolkit)

NLTK是一个非常优秀且著名的自然语言处理工具,最早是由宾夕法尼亚大学(University of Pennsylvania)计算机和信息科学系的两位老师开发的,主要是针对英语的自然语言处理工具。NLTK早期被用来教学,在深度学习这种“粗暴的”解决方案之前,自然语言处理的很多任务都是认知学、语言学等内容,做词法分析、语句结构分析等工作很主流。而NLTK在这方面的分析非常好。

当前,NLTK支持的能力包括:

  • Tokenize和文本标注(Tokenize and tag some text):如分词、词性标注等
  • 命名实体识别(Identify named entities):即专有名词识别,包括人名、地名等
  • 语言分析树(语法树):反应语言字符的语法关系的有根有序树

NLTK提供了50多个语料库和词汇资源提供了易于使用的接口(最著名的WordNet等)。

这个工具是完全开源的,遵守的是 Apache License Version 2.0,商业使用非常友好。

官方网站:https://www.nltk.org/

二、HuggingFace的Transformer

Hugging Face是一家非常活跃的人工智能创业公司。之前我们也介绍过:人工智能初创企业Hugging Face是什么样的企业——HuggingFace简介。它拥有一个非常强大并且活跃的人工智能社区。有超过5000多家机构都在Hugging Face的社区发布内容,包括Google AI、Facebook AI、微软等。



HuggingFace的早期流行主要是贡献了一个基于Pytorch的Bert预训练模型,即pytorch-pretrained-bert。相信这个库很多人都使用过,这个库非常好用,于是也顺着NLP模型的发展不断扩张。如今,HuggingFace整合了他们的贡献的NLP领域的预训练模型,发布了Transformers库。他们的模型是目前NLP最火的深度学习模型的优秀代表,实现了很多的预训练模型。可用于文本分类、信息提取、问题回答、总结、翻译、文本生成等任务,支持100多种语言。

GitHub地址:https://github.com/huggingface

三、spaCy

spaCy是一个为NLP商用设计的开源软件,是一个用于高级自然语言处理的开源软件库,由编程语言Python和Cython编写。与广泛用于教学和研究的NLTK不同,spaCy专注于提供用于生产的软件。


spaCy的一个重要的特点是允许通过其自己的机器学习库Thinc连接由TensorFlow、PyTorch或MXNet等流行机器学习库训练的统计模型。其主要功能:

  • 语音部分标记
  • 依赖关系解析
  • 文本分类
  • 命名实体识别

spaCy统计神经网络模型可用于17种语言,包括英语、葡萄牙语、西班牙语、俄语和汉语,还有一个多语言的NER模型。由于它追求性能,底层都是Cython,对于内存的管理非常精致,很擅长大规模信息提取任务。spaCy是五年前发布的,目前生态发展得也很不错。最新的V3版本使用了基于transformer的流水线,性能提升很大。

该软件是开源软件,遵从MIT协议,商业使用友好。

官方网站:https://spacy.io/

四、gensim

gensim是一个基于Python的主题模型(就是那个LDA一类的模型,流行了十多年,传闻帮助了全世界大批计算机专业博士拿到学位的东西,哈哈哈)工具,是免费的Python库。它是可扩展的统计语义工具,可以分析文本语义结构并抽取相似语义的文本。很多公司如IBCN、DTU、issuu等都在使用。


gensim特点:

  • 速度很快:其底层使用的是经过实战检验的、高度优化和并行化的C程序。
  • 基于数据流的处理,也就是Gensim可以使用数据流算法来处理任意大的语料。没有 “数据集必须适合在RAM中 “的限制。
  • 没有平台限制,支持python和numpy
  • 每周100万次的下载,社区活跃

不过有点可惜的是开源协议是GNU LGPL,虽然商业使用比GPL好,但是还是比不上Apache与MIT这种。区别主要是必须使用动态链接使用这个软件才可以高枕无忧,一旦使用静态链接,必须开源。

官方网站:https://radimrehurek.com/gensim/

五、柏林洪堡大学的Flair NLP框架

作为PyTorch生态系统的正式组成部分,Flair是最受欢迎的NLP深度学习框架之一。这是三年前由德国的柏林洪堡大学(Humboldt University of Berlin)的老师开发并开源,目前GitHub上有1.15万个star,被fork了1800多次。

这个框架最大的特点是简单易用,但是非常强大。Flair适用于许多不同语言的文本数据,如德语、英语、波兰语、日语等。

最大的亮点主要是两个:

  • 支持很多文本分析任务:包括序列标签、文本分类、相似性学习和文本回归等。
  • Word Embeddings:Flair支持大量流行的和实验性的词嵌入,包括GloVe、FastText、ELMo、BERT及其变体(RoBERTa、ALBERT、CamemBERT等)、XLM、Byte Pair Embeddings以及Flair自己的word embedding方法。

开源软件,MIT协议,商业使用非常友好。

总结

这几款NLP的开源Python库都是十分优秀的,并且商业使用非常友好,也有各自特点,不论是自己使用学习,还是工业应用都非常不错。国内也有一些针对中文的开源贡献,下次可以总结一下。

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送