毕业论文
您现在的位置: 语言识别 >> 语言识别发展 >> 正文 >> 正文

独家人工智能学习篇7自然语言处理开源框架

来源:语言识别 时间:2022/10/18

01概述

自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的重要方向,研究实现人与计算机之间用自然语言进行有效交互的各种理论和方法。

20世纪60年代,自然语言处理早期研究以机器翻译为主,但由于理论和技术均不成熟,进展不大,且大多数自然语言处理系统都是基于复杂人工规则实现。从80年代末开始,自然语言处理引入了机器学习算法并尝试从语料中学习统计特征。自然语言具有稀疏性和语义性等特点,如何对字、词、短语、句、段、篇章等结构进行有效表示,是研究自然语言处理需解决的首要问题。传统符号主义大多借助人工整理的规则和经验,或使用One-Hot稀疏编码将自然语言表示为计算机能接受的输入形式。前者需耗费大量人力且扩展性不强,后者易丢失语义和语序等信息且学习能力较差。

随着数据量不断积累、深度学习快速发展和计算能力飞速提升,分布式主义逐渐成为主流,即使用低维、稠密、实值的向量来表示字词等语义单元。训练词向量的过程称为词嵌入(WordEmbedding),代表性工作包括Word2Vec、GloVe、fastText等。Word2Vec由Google于年开源,所采用的两种方法(CBOW、Skip-Gram)在开源软件Gensim中均有实现;GloVe由斯坦福自然语言处理组于年开源,提供了在不同语料上训练的多维词向量;fastText由Facebook于年开源,提供了种语言对应语料的预训练词向量。

如图1所示,自然语言处理的基础研究领域包括文本分类、依存分析、命名实体识别、词性标注、中文分词、情感分析、信息抽取、文本摘要等,这些任务主要在于“处理”,为后续进一步的“理解”和“应用”提供基础。国内外有很多相关开源软件,集成了以上常用的自然语言处理功能,例如NLTK、OpenNLP、LTP、StanfordCoreNLP、gensim、spaCy、FudanNLP、NLPIR、THULAC、HanLP等。

除此之外,自然语言处理还包括文本配对、问答系统、阅读理解、机器翻译、聊天机器人、对话系统等更偏重于应用的研究领域。在文本配对领域,Quora和知乎都开放了用于研究相似问题对检测等任务的数据集;在阅读理解领域,斯坦福大学于年通过Amazon众包平台建立了基于维基百科的数据集SQuAD,Microsoft亚洲研究院于年开放了基于必应搜索记录的数据集MSMARCO;在机器翻译领域,哈佛大学自然语言处理研究组于年开源了机器翻译系统OpenNMT,称其质量已达商用水准,Facebook于年开源了基于CNN的机器翻译项目Fairseq,翻译速度大幅提升且准确性更高;在聊天机器人领域,AppleSiri、Microsoft小冰、百度小度等聊天机器人层出不穷而且功能不断完善。

图1中按照开放数据集、基础领域、应用领域三个层次描述了NLP研究领域的开源概况。

02典型开源软件

自然语言处理作为人工智能领域中的重要研究方向,不仅有大量应用场景,也涌现出一批开源软件和开源数据集,提供了丰富而完善的功能和语料,为研究人员提供了良好的科研基础,促进了自然语言处理研究的快速发展。本小节对部分典型开源软件予以介绍。

NLTK(NaturalLanguageToolkit)由Python编写,是宾夕法尼亚大学计算机与信息科学系在年开发的基于Apache协议的开源软件。NLTK提供包括WordNet在内的百余个语料资源,以及分类、分词、词干提取、词性标注、依存分析、语义推断等一系列功能,并维护了一个活跃的开发者论坛。除了免费、开源、社区驱动等特性之外,NLTK还提供了简易的上手教程和丰富的开发文档,在众多国家的大学课程中作为教学工具广泛使用。

OpenNLP是基于机器学习的自然语言处理工具包,是ApacheSoftwareFoundation在年开发的基于Apache2.0协议的开源软件。OpenNLP提供基于机器学习的自然语言文本处理功能,包括分词、分句、分块、词性标注、命名实体识别、语法解析、指代消解等,为进一步完成后续任务提供支持。OpenNLP涵盖最大熵、感知机、朴素贝叶斯等模型,为多种语言提供预训练模型以及对应的标注语料资源,既可以通过JavaAPI或命令行接口调用,也可以作为组件集成到ApacheFlink、NiFi、Spark等分布式流数据处理框架中。

LTP(LanguageTechnologyPlatform)是支持Java和Python接口的中文处理基础平台,是哈尔滨工业大学社会计算与信息检索研究中心在年开发的基于GPL协议的开源软件。LTP提供中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等丰富、高效、精准的自然语言处理模块。“语言云”以LTP为基础,提供具有跨平台、跨语言等特性的中文自然语言处理云服务。

StanfordCoreNLP支持多种语言的处理,是斯坦福大学自然语言处理组在年开发的基于GPL协议的开源软件。StanfordCoreNLP提供词干提取、词性标注、命名实体识别、依存语法分析、指代消解、情感分析、关系抽取等功能,还集成了很多自然语言处理工具,为多种主流编程语言提供开发接口,并且支持以Web服务形式运行。

Gensim是基于机器学习的自然语言处理工具包,是RadimRehurek在年开发的基于GUN协议的开源软件。Gensim提供主题建模、文档索引以及相似度获取等功能。Gensim按流式处理数据,所实现的算法不受语料大小影响,可以处理比RAM更大的输入数据。

spaCy是支持20多种语言的自然语言处理包,是ExplosionAI在年开发的基于MIT协议的开源软件。spaCy提供词性标注、依存分析、命名实体识别等功能,以面向企业级大规模应用快速高效而著称。spaCy可用于自然语言深度学习的预处理阶段,与TensorFlow、PyTorch、scikit-learn、Gensim等Python人工智能技术体系结合使用。

FudanNLP是用Java语言编写的中文自然语言处理工具包,是复旦大学自然语言处理实验室在年开发的基于LGPL3.0协议的开源软件。FudanNLP提供中文分词、词性标注、实体名识别、关键词抽取、依存句法分析、时间短语识别等中文处理功能,文本分类、新闻聚类等信息检索功能,以及在线学习、层次分类、聚类等结构化学习算法。

NLPIR汉语分词系统(又名ICTCLAS)是面向中文的语义分析系统,是中科院计算所在年开发的开源软件。NLPIR提供中文分词、词性标注、命名实体识别、微博分词、新词发现、关键词提取等功能,支持GBK、UTF8、BIG5等编码。

THULAC是中文词法分析工具包,是清华大学自然语言处理与社会人文计算实验室在年开发的基于MIT协议的开源软件,包括C++、Java、Python三个版本,主要提供中文分词和词性标注等功能,具有分词能力强、准确率较高、速度较快等特点。

对于其他自然语言处理开源软件,由于篇幅限制,此处不作详细介绍。图2按照时间列举了常见的开源软件。

03小结

作为人工智能领域的重要组成部分,自然语言处理在基础研究领域的相关技术已经逐步趋于成熟和完善,并且有许多完整的开源软件可供使用,进一步加速了自然语言处理的发展和应用。近年来,阅读理解、机器翻译、聊天机器人等更复杂、更综合、更系统的研究领域吸引了越来越多的

转载请注明:http://www.0431gb208.com/sjszyzl/2013.html