选自斯坦福
机器之心编译
参与:李泽南、Smith
近日,斯坦福大学发布了 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 CoreNLP 整合了所有 Stanford NLP 工具,其中包括(POS)标记器、命名实体识别器(NER)、解析器、核心分析系统和情绪分析工具,并提供了英文分析模型文件。这一项目的目的是方便人们更快、更轻松地获得完整的自然语言文本语言注释。它的设计是高度灵活且可扩展的。使用一个选项,你就可以选择启用哪些工具、禁用哪些。
它适用于处理句子之中的语法结构。例如,哪些单词是聚合在一起的(作为短语)哪些单词是主题或对象动词。概率解析器使用手工标记的句子中获得知识,试图对新句子产生有意义的分析。这些基于统计的解析器虽然仍然可能产生错误,但通常工作得很好。它们的发展是 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 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)序列模型的通用实现。这意味着通过训练自己的模型,你实际上可以使用该代码为任何任务构建序列模型。
A Part-Of-Speech Tagger(POS Tagger) 是一个可以用某些语言来读取文本的软件,它可以把部分语音(和其它标记)分配到每一个单词上,比如、动词、形容词等,尽管一般的计算型应用使用的是像「名词复数」这样的更细密的 POS 标签。
完整版下载包含三个训练过的英语标签器模型,一个阿拉伯语标签器模型,一个汉语标签器模型,和一个德语标签器模型。两种版本都包括相同的源代码和其它必需的文件。给定 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 许可证之下。
所有其下的软件均为开源,在 GNU 通用公共许可证(v2 及更新的版本)之下。注意:它是 GPL 形式的,允许免费使用,但不允许被整合到任何形式的专有软件中,即使是其中的一部分,或翻译版本。商业应用请联系斯坦福自然语言处理组。
本文为机器之心编译,转载请联系本公众号获得授权。
✄------------------------------------------------
加入机器之心(全职记者/实习生):hr@jiqizhixin.com
投稿或寻求报道:editor@jiqizhixin.com
广告&商务合作:bd@jiqizhixin.com
点击阅读原文,查看机器之心官网↓↓↓