开源NLP(自然语言处理)库的功能对比
AI Conference 北京站
AI Conference 2019 北京站6月18-21日即将开幕!
培训:大会推出「PyTorch 深度学习」两天培训课程,资深数据科学家主讲,限制人数,抢票从速!
编者注:文中超链接如果不能访问可以点击“阅读原文”访问本文原页面;查看2019年6月18日至21日在北京举行的人工智能大会上的相关议题。
开源NLP库
在开发和生产中,最受欢迎的NLP库列表如下:
Spark NLP
spaCy
NLTK
OpenNLP
Stanford CoreNLP
显然,NLP领域还有更多的库。但是,这些库更通用,涵盖更多功能,而不只是专注于特定用例。例如,gensim是一个NLP库,一开始是为构建文本主题模型而创建的,不能用于完整的NLP管道。
在本文的分析中,我们只考虑提供如下核心功能集合的库:
句子检测
单字/单词的细粒度单位化
词干提取
语法标记
词性(POS)
命名实体识别(NER)
依赖分析器
训练特定域的语言模型
以及,提供以下的部分或全部功能:
文本匹配
日期匹配
文本分块
拼写检查
情绪检测
很多其他功能!
这里比较的所有五个库都有一些可以定义的NLP数据管线的概念 – 因为大多数NLP任务需要组合这些功能中的某些,来获得有用的结果。这些管线,可以是“传统”的管线,也可以是基于深度学习的管线。
这是最受欢迎的NLP库的功能比较:
名称 | SparkNLP | NLTK | SpaCy | CoreNLP |
句子检测 | 是 | 是 | 是 | 是 |
细粒度单位化 | 是 | 是 | 是 | 是 |
词干提取 | 是 | 是 | 是 | 是 |
语法 | 是 | 是 | 是 | 是 |
磁性标注 | 是 | 是 | 是 | 是 |
命名实体识别 | 是 | 是 | 是 | 是 |
依赖分析 | 是 | 是 | 是 | 是 |
文本匹配 | 是 | 否 | 否 | 是 |
日期匹配 | 是 | 否 | 否 | 是 |
段落分解 | 是 | 是 | 是 | 是 |
拼写检查 | 是 | 否 | 否 | 否 |
情绪检测 | 是 | 否 | 否 | 是 |
预训练模型 | 是 | 是 | 是 | 是 |
训练模型 | 是 | 是 | 是 | 是 |
以下是对现代计算平台和流行编程语言的支持的技术功能比较:
特性 | Spark NLP | NLTK | spaCy | CoreNLP | OpenNLP |
完整支持JavaAPI | 是 | 否 | 否 | 是 | 是 |
完整支持ScalaAPI | 是 | 否 | 否 | 否 | 否 |
完整支持PythonAPI | 是 | 是 | 是 | 否 | 否 |
支持GPU训练 | 是 | 否 | 是 | 否 | 否 |
支持用户定义的深度神经网络 | 是 | 否 | 否 | 否 | 否 |
原生支持Spark | 是 | 否 | 否 | 否 | 否 |
支持Hadoop(YARN以及HDFS) | 是 | 否 | 否 | 否 | 否 |
许可证和支持
“开源”在不同地方意味着不同的事情 – 例如,斯坦福大学的CoreNLP需要商业用途的付费许可证,而且该许可证仍然不能提供已定义的SLA的商业支持。希望构建商业级生产级NLP解决方案的团队需要一个不断改进核心库的活跃社区,以及付费企业级支持选项。
以下是各种库在许可和支持方面的对比:
名字 | 语言 | 许可证 | 商业用途 | 商业支持 |
SparkNLP | Python, Java, Scala | Apache 2.0 | 是 | 是 |
spaCy | Python | MIT | 是 | 是 |
NLTK | Python | Apache 2.0 | 是 | 否 |
CoreNLP | Java | GNU GPL | 付费许可 | 否 |
OpenNLP | Java | Apache 2.0 | 是 | 否 |
斯坦福大学出售CoreNLP的商业许可证,这是商业用途所必需的。为spaCy提供商业许可证和支持的explosion.ai同样也为快速标注迭代工具prodigy、机器学习库thinc提供许可证。John Snow Labs提供企业级Spark NLP服务,包括基本版,24×7级别的支持,以及诸如命名实体解析,断言状态检测、ID脱敏等高级功能。它还为提供 医疗领域专用的Spark NLP,其中包括一套针对生物医学NLP的最先进的模型和数据集。
预训练模型
虽然大多数NLP库支持用户训练新模型,但NLP库具有现有的预训练的高质量模型这一点非常重要。
不过,大多数NLP库仅支持通用的预训练模型(POS,NER等)。由于其许可证的要求,某些库根据模型授权状态,不允许将预训练模型作商业用途。
名称 | 通用预训练模型 | 领域特定预训练模型 | 许可证是否允许商用 |
SparkNLP | 有 | 有(医疗领域) | 有(通用) |
spaCy | 有 | 无 | 有(某些GPL许可) |
NLTK | 有 | 无 | 有 |
CoreNLP | 有 | 无 | 无 |
OpenNLP | 有 | 无 | 有 |
以下是与每个库一起打包的通用预训练模型:
名称 | 语法化 | 词性标注 | 命名实体识别 | 依赖关系解析 | 拼写检查 | 情感分析 |
SparkNLP | 有 | 有 | 有 | 有 | 有 | 有 |
spaCy | 有 | 有 | 有 | 有 | 无 | 无 |
NLTK | 有 | 有 | 有 | 有 | 无 | 无 |
CoreNLP | 有 | 有 | 有 | 有 | 无 | 有 |
OpenNLP | 有 | 有 | 有 | 有 | 无 | 无 |
结论
并非所有开源NLP库都提供相同的功能。鉴于您的编程语言,平台,许可和支持需求,并非所有工具都可用于您的项目。本文为缩小您选择范围,构建了一张快速查询的备忘单。如果您了解某些新库、新版本并希望我们对此清单保持更新,请联系我们,帮助我们及时了解最新信息。
除了比较工具的功能之外,您的下一个标准应该是比较准确性、速度和可扩展性。祝您在NLP领域中好运!
Maziyar Panah and David Talby
David Talby是Pacific AI的首席技术官。他正在帮助多个快速发展的公司应用大数据和数据科学技术来解决医疗保健、生命科学和相关领域的实际问题。David在构建和运营互联网规模的数据科学和业务平台以及构建世界一流的敏捷分布的团队方面拥有丰富的经验。在加入Pacific AI前,他曾在微软的Bing Group工作,负责Bing Shopping在美国和欧洲的业务运营。他还在在西雅图和英国为亚马逊工作。在那里他建立并管理分布的团队,帮助扩展亚马逊财务系统。David拥有计算机科学博士学位和计算机科学硕士与工商管理硕士学位。
开源NLP(自然语言处理)库的功能对比相关推荐
- WPF开源项目Newbeecoder.UI库新功能演示
为了满足用户对Newbeecoder.UI库更多功能需求,在控件库中加入自定义按钮样式.输入框带图标.多选下拉框,日期时间和日历控件.不确定进度条.标准选项卡.绘制曲线图. 1.自定义样式按钮增加7种 ...
- 开源nlp自然语言处理 word2vec nltk textblob crf++ 机器人、翻译、简繁转换、分词、词性、词向量、关键词主题、命名体识别、语义分析、情感正负面、近义同义词、句子相似性、聚类
github开源:https://github.com/lhyxcxy/nlp 说明 本例子主要集成各种nlp框架 主要功能如下 (1)自动问答机器人 (2)中文翻译,及繁体转简体 (3)关键词提取, ...
- NLP自然语言处理库系列教程——gensim库
Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达.它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法, ...
- python自然语言处理库_Python 自然语言处理(NLP)工具库汇总
最近正在用nltk 对中文网络商品评论进行褒贬情感分类,计算评论的信息熵(entropy).互信息(point mutual information)和困惑值(perplexity)等(不过这些概念我 ...
- NLP判断语言情绪_Python的8大牛叉的自然语言处理库概览
Python系技术生态中有很多的NLP资源,该如何选择呢?本文将介绍用于分析文本的最佳Python库以及如何使用它们. 0.导引 自然语言处理,或简称为NLP,最好描述为"用于处理语音和文本 ...
- 6大最流行、最有用的自然语言处理库对比
现在自然语言处理(NLP)变得越来越流行,这在深度学习发展的背景下尤其引人注目.NLP 是人工智能的一个分支,旨在从文本中理解和提取重要信息,进而基于文本数据进行训练.NLP 的主要任务包括语音识别和 ...
- 最后防线:三款开源HIDS功能对比评估
本文是对Wazuh, Osquery, AgentSmith这三款开源HIDS进行功能性的评估,目的是取长补短,做一个完善的HIDS系统. 简介 HIDS的功能主要是依靠agent的数据收集功能, 所 ...
- 适用于NLP自然语言处理的Python:使用Facebook FastText库
在本文中,我们将研究FastText,它是用于单词嵌入和文本分类的另一个极其有用的模块. 最近我们被客户要求撰写关于NLP自然语言处理的研究报告,包括一些图形和统计输出. 在本文中,我们将简要探讨Fa ...
- C++-网络库:Poco概述【开源的C++类库的集合】【提供简单的、快速的网络和可移植应用程序的C++开发】【和C++标准库可以很好的集成并填补C++标准库的功能空缺】【适合嵌入式开发】
学习一个框架前,要先明白它的是什么,为什么,怎么用.下面这些文字,是从中文poco官网上转过来的,正如poco c++库的特点,非常清晰,代码风格更是一目了然: poco开发库的特点,非常适合写后台处 ...
最新文章
- Kali Linux常用服务配置教程安装及配置DHCP服务
- html 中embed标签使用
- UA MATH523A 实分析3 积分理论例题 证明函数列L1收敛的一个题目
- 总结一下一般游戏中3D模型各种勾边方法遇到的工程性问题
- python中deepcopy函数_python – copy.deepcopy使用自定义的__new __()方法在对象上引发TypeError...
- [洛谷P1074] 靶形数独
- u-boot 详细介绍 .
- (一)低功耗设计目的与功耗的类型
- 状态开关按钮(ToggleButton)及按钮(Swich)的使用
- python summary writer_tensorflow中summary操作
- JAVA实现置换加密和幻方加密(密码学)
- 【华为云技术分享】原来CTR预估模型的发展有这样的规律
- android Intent 全面点的介绍
- (87)FPGA读文件激励(readmemb)
- arp协议属于哪一层_TCP/IP协议栈-之-ARP协议分析
- C#调用Dephi接口方法
- numpy实用技巧(二)
- kubernetes存储详解
- Java中Date和Calender类的使用方法
- PCManFTP v2.0(CVE-2013-4730)漏洞分析报告
热门文章
- 学生签到系统c代码_学生考勤系统源代码
- 17/10/2019 细胞死亡的十一种方式--转自解螺旋公众号
- 抵押贷款服务市场现状及未来发展趋势
- (Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】
- 【agc004e】Salvage Robots
- apache整合tomcat实现web服务器的动静态资源的分离解析
- Tp5 实现短信发送及页面倒计时
- Educational Codeforces Round 131 (Rated for Div. 2) A-D题解
- 电销CRM客户关系管理系统开发12大核心功能
- 戰女神V、ef_latter、BaldrSky 注册表补丁