斯坦福大学发布Stanford.NLP.NET:集合多个NLP工具

近日,斯坦福大学开源了 Stanford.NLP for .Net,为自然语言处理领域的开发者们提供帮助。顾名思义,它是 Stanford NLP 为.NET 准备的版本。

链接:https://sergey-tihon.github.io/Stanford.NLP.NET/

该项目包含使用使用 IKVM.NET 将 Stanford NLP.jar 软件包重新编译到.NET 中的构建脚本,这些软件经过测试可以有效工作,该工具包的介绍网站是:https://sergey-tihon.github.io/Stanford.NLP.NET/

所有重编译软件包在 NuGet 上:https://www.nuget.org/packages?q=Stanford.NLP

其中包含:

  • Stanford.NLP.CoreNLP
  • Stanford.NLP.NER
  • Stanford.NLP.Parser
  • Stanford.NLP.POSTagger
  • Stanford.NLP.Segmenter
  • Stanford.NLP.CoreNLP

Stanford CoreNLP 提供了一组自然语言分析工具,可采用原始的英文文本输入,并提供单词的基本形式、读音形式、无论它们是公司名还是人名等,以及规范化日期、时间和数字数量。它根据短语和单词之间的联系来标记句子的结构,并可指出哪个名词短语指向相同实体。

Stanford CoreNLP 是一个集成框架,可以让你轻松使用语言分析工具来分析一段文字。在纯文本的基础上,你可以使用仅仅两行代码来运行整个工具。它的分析为更高级别和特定领域的文本理解应用提供了基础。

Stanford CoreNLP 整合了所有 Stanford NLP 工具,其中包括(POS)标记器、命名实体识别器(NER)、解析器、核心分析系统和情绪分析工具,并提供了英文分析模型文件。这一项目的目的是方便人们更快、更轻松地获得完整的自然语言文本语言注释。它的设计是高度灵活且可扩展的。使用一个选项,你就可以选择启用哪些工具、禁用哪些。

Stanford.NLP.Parser

它适用于处理句子之中的语法结构。例如,哪些单词是聚合在一起的(作为短语)哪些单词是主题或对象动词。概率解析器使用手工标记的句子中获得知识,试图对新句子产生有意义的分析。这些基于统计的解析器虽然仍然可能产生错误,但通常工作得很好。它们的发展是 20 世纪 90 年代自然语言处理领域的最大突破之一。

你可以在这里尝试使用它:http://nlp.stanford.edu:8080/parser/

词汇化的概率解析器通过单独的 PCFG 结构和语法依赖实现了因子产生模型,其中的偏好通过有效精准推理结合 A*算法形成。同时,该软件也可以简单地用作准确的无索引随机上下文无关语法解析器。两者都可以作为性能良好的统计解析系统使用。在解析器中,有一个 GUI(Java)可用于查看解析器的短语结构树输出。

该解析器不仅有英文版本,还适用于一些其他语言。包括基于 Chinese Treebank 的中文解析器,基于 Negra 语料库的的与解析器,基于 Penn Arabic Treebank 的阿拉伯语解析器,以及意大利语、保加利亚语和葡萄牙语。

该解析器提供 Stanford Dependencies 输出,以及解析结构树。类型的依赖关系也被称为语法关系。这种风格的输出仅适用于中文和英文,更多细节可参考:https://nlp.stanford.edu/software/stanford-dependencies.shtml

Stanford.NLP.NER

Stanford NER 是一个 Named Entity Recognizer 的实现。命名实体识别(NER)标签在文本序列中代指事物,如人、公司名、基因和蛋白质名称。它配有仔细设计的特征提取器,用于命名实体识别,以及许多用于定义特征提取器的其他选项,其中包含三种分类(PERSON、ORGANIZATION、LOCATION)的英语识别器,Stanford NLP Group 也在原项目页面中提供了其他不同语言和环境的模型,包括仅训练过 CoNLL 2003 数据集的版本:https://nlp.stanford.edu/software/CRF-NER.html

Stanford NER 也被称为 CRFClassifier。该软件提供(任意顺序)线性链条件随机场(CRF)序列模型的通用实现。这意味着通过训练自己的模型,你实际上可以使用该代码为任何任务构建序列模型。

Stanford.NLP.POSTagger

A Part-Of-Speech Tagger(POS Tagger) 是一个可以用某些语言来读取文本的软件,它可以把部分语音(和其它标记)分配到每一个单词上,比如、动词、形容词等,尽管一般的计算型应用使用的是像「名词复数」这样的更细密的 POS 标签。

完整版下载包含三个训练过的 English 标签器模型,一个 Arabic 标签器模型,一个 Chinese 标签器模型,和一个德语标签器模型。两种版本都包括相同的源代码和其它必需的文件。给定 POS 标注的训练文本,标签器可以在任何语言上进行重复训练。

词类名缩写(Part-of-speech name abbreviations):英文标签器使用的是 Penn Treebank 标签集。这里有 Penn Treebank POS 标签集的相关文献连接(http://acl.ldc.upenn.edu/J/J93/J93-2004.pdf,http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html,http://www.computing.dcu.ie/~acahill/tagset.html)。标签器在 GNU General Public License 下被授权,包含源码。软件包包括命令行调用,服务器运行和一个 Java API。

Stanford.NLP.Segmenter

原生文本的标记化(Tokenization)是许多 NLP 任务的标准预处理步骤。对英语来说,标记化通常包括标点符号分离和一些词缀的分离。其它语言则需要更大量的标记预处理,通常叫做分割(segmentation)。

The Stanford Word Segmenter(斯坦福词汇分割器)现在支持阿拉伯语和中文。它所提供的分割方法已经在大量应用中广泛应用,并且表现不俗。

斯坦福 NLP 组推荐对包含长句的文件使用至少 1G 的存储。

分割器现在已经可以下载,在 GNU General Public License 下被授权,包含源码。软件包包括命令行调用和一个 Java API。

分割器代码被双重授权(与 MySQL 的方式相类似)。开源许可是经过全部授权的,很多使用都是免费的。

安装

a. 选择适用于任务的软件包。如果你的任务非常复杂,需要深度分析,请使用 Stanford CoreNLP

b. 安装选择的 NuGet 软件包

c. 下载原始 ZIP 文档(软件包上有链接)

d. 如果有的话,解压缩*.jar 盒模型

e. 开始之前,请参阅示例:https://sergey-tihon.github.io/Stanford.NLP.NET/samples.html

注意:请不要尝试从项目中引用 NuGet 软件包,它们是互相关联的!如果你需要使用多于一个,请引用 Stanford CoreNLP 软件包,所有特性都在包中。

版本

NuGet 软件包中的模型版本与 Stanford NLP Group 中的相对应。例如,如果你使用了 Stanford NLP 网站中的 Stanford CoreNLP 3.3.1 版,在 NuGet 中,它的版本为 3.3.1.x 版,其中 x 只对应 NuGet,该位数字被用作标记.NET 集合中的内部版本。

许可证

该源代码(构建脚本,集成测试,文档和示例)在 MIT 许可证之下。

NuGet 包许可

所有其下的软件均为开源,在 GNU 通用公共许可证(v2 及更新的版本)之下。注意:它是 GPL 形式的,允许免费使用,但不允许被整合到任何形式的专有软件中,即使是其中的一部分,或翻译版本。商业应用请联系斯坦福自然语言处理组。

入门
暂无评论
暂无评论~
返回顶部