内容简介:开源NLP库在开发和生产中,最受欢迎的NLP库列表如下:显然,NLP领域还有更多的库。但是,这些库更通用,涵盖更多功能,而不只是专注于特定用例。例如,
开源NLP库
在开发和生产中,最受欢迎的NLP库列表如下:
显然,NLP领域还有更多的库。但是,这些库更通用,涵盖更多功能,而不只是专注于特定用例。例如, gensim 是一个NLP库,一开始是为构建文本主题模型而创建的,不能用于完整的NLP管道。
在本文的分析中,我们只考虑提供如下核心功能集合的库:
- 句子检测
- 单字/单词的细粒度单位化
- 词干提取
- 语法标记
- 词性(POS)
- 命名实体识别(NER)
- 依赖分析器
- 训练特定域的语言模型
以及,提供以下的部分或全部功能:
- 文本匹配
- 日期匹配
- 文本分块
- 拼写检查
- 情绪检测
- 很多其他功能!
这里比较的所有五个库都有一些可以定义的NLP数据管线的概念 – 因为大多数NLP任务需要组合这些功能中的某些,来获得有用的结果。这些管线,可以是“传统”的管线,也可以是基于深度学习的管线。
图片来源:<a href="http://http://blog.aylien.com/leveraging-deep-learning-for-multilingual/">Parsa Ghaffari</a>
这是最受欢迎的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领域中好运!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 自然语言处理NLP开发有哪些值得关注的开源工具?
- 自然语言模型算法太杂乱?国产统一 AI 开源框架来了!
- 谷歌开源顶级人工智能自然语言预处理训练技术
- Jcseg 2.2.0 发布,Java 轻量级开源自然语言处理包
- Jcseg 2.3.0 发布,Java 轻量级开源自然语言处理包
- Jcseg 2.4.0 发布,Java 轻量级开源自然语言处理包
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高性能JavaScript
Nicholas C.Zakas / 丁琛、赵泽欣 / 电子工业出版社 / 2010-11 / 49.00元
如果你使用JavaScript构建交互丰富的Web应用,那么JavaScript代码可能是造成你的Web应用速度变慢的主要原因。《高性能JavaScript》揭示的技术和策略能帮助你在开发过程中消除性能瓶颈。你将会了解如何提升各方面的性能,包括代码的加载、运行、DOM交互、页面生存周期等。雅虎的前端工程师Nicholas C. Zakas和其他五位JavaScript专家介绍了页面代码加载的最佳方......一起来看看 《高性能JavaScript》 这本书的介绍吧!