赞
踩
自然语言处理(Natural Language Processing,简称 NLP),是研究计算机处理人类语言的一门技术。随着深度学习在图像识别、语音识别领域的大放异彩,人们对深度学习在 NLP 的价值也寄予厚望。再加上 AlphaGo 的成功,人工智能的研究和应用变得炙手可热。自然语言处理作为人工智能领域的认知智能,成为目前大家关注的焦点。NLP 研究领域包括:
句法语义分析:对于给定的句子,进行分词、词性标记、命名实体识别和链接、句法分析、语义角色识别和多义词消歧。
信息抽取:从给定文本中抽取重要的信息,比如,时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。涉及到实体识别、时间抽取、因果关系抽取等关键技术。
文本挖掘(或者文本数据挖掘):包括文本聚类、分类、信息抽取、摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。
机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。根据输入媒介不同,可以细分为文本翻译、语音翻译、手语翻译、图形翻译等。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。
信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可利用 1,2,3 的技术来建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。
问答系统: 对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。
对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。同时,为了体现个性化,要开发用户画像以及基于用户画像的个性化回复。
以上引用微软亚洲研究院首席研究员周明博士在知乎的回答。
当前,用于自然语言处理(NLP)的 Python工具包括:
1.NLTK
NLTK 在使用 Python 处理自然语言的工具中处于领先的地位。它提供了超过50 个包括如: WordNet 这种方便处理词汇资源的数据接口。同时,还有一套用于分类、标记化、词干标记、解析和语义推理的文本处理库,以及工业级 NLP 库的封装器和一个活跃的讨论论坛。
统计语言学话题方面的手动编程指南加上全面的 API 文档,使得 NLTK 非常适用于语言学家、工程师、学生、教育家、研究人员以及行业用户等人群。NLTK 可以在 Windows、Mac OS X 以及 Linux 系统上使用。最好的一点是,NLTK 是一个免费、开源的社区驱动的项目。
因此,NLTK 被称为一个:
使用 Python 开发的用于统计语言学的教学和研究的有利工具,和一个自然语言处理的高效库。
2.Pattern
Pattern 拥有一系列的自然语言处理工具,比如说词性标注工具(Part-Of-Speech Tagger),N元搜索(n-gram search),情感分析(sentiment analysis),WordNet。它也支持机器学习的向量空间模型,聚类,向量机。
3.TextBlob
TextBlob 是一个处理文本数据的 Python 库。它提供了一个简单的 api 来解决一些常见的自然语言处理任务,例如词性标注、名词短语抽取、情感分析、分类、翻译等等。
4.Gensim
Gensim 是一个 Python 库,用于对大型语料库进行主题建模、文件索引、相似度检索等。它可以处理大于内存的输入数据。作者说它是:
纯文本上无监督的语义建模最健壮、高效、易用的软件。
5.PyNLPI
PyNLPI 全称是:Python 自然语言处理库(Python Natural Language Processing Library,音发作: pineapple) 是一个用于自然语言处理任务库。它集合了各种独立或松散互相关的,那些常见的、不常见的、对 NLP 任务有用的模块。PyNLPI 可以用来处理 N 元搜索,计算频率表和分布,建立语言模型。它还可以处理向优先队列这种更加复杂的数据结构,或者像 Beam 搜索这种更加复杂的算法。同时,该处理库还提供了完善的文档库。
6.spaCy
spaCy 是一个商业的开源软件。结合了 Python 和 Cython 优异的 NLP 工具。是快速的,最先进的自然语言处理工具。
7.Polyglot
Polyglot 支持大规模多语言应用程序的处理。它支持165 种语言的分词,196 中语言的辨识,40 种语言的专有名词识别,16 种语言的词性标注,136 种语言的情感分析,137 种语言的嵌入,135 种语言的形态分析,以及69 种语言的翻译。
8.MontyLingua
MontyLingua 是一个免费的、功能强大的、端到端的英文处理工具。在 MontyLingua 输入原始英文文本 ,输出就会得到这段文本的语义解释。它适用于信息检索和提取,请求处理,问答系统。从英文文本中,它能提取出主动宾元组,形容词、名词和动词短语,人名、地名、事件,日期和时间等语义信息。
9.BLLIP Parser
BLLIP Parser(也叫做 Charniak-Johnson parser)是一个集成了生成成分分析器和最大熵排序的统计自然语言分析器。它包括命令行和 Python 接口。
10.Quepy
Quepy 是一个 Python 框架,提供了将自然语言问题转换成为数据库查询语言中的查询。它可以方便地自定义自然语言中不同类型的问题和数据库查询。所以,通过 Quepy,仅仅修改几行代码,就可以构建你自己的自然语言查询数据库系统。
另外,上述工具大部分在处理英文自然语言上展示了良好的效果。同时,对于国内科研人员而言,自然语言处理往往需要考虑在中文应用中的差异处理。本文最后附上:复旦大学邱锡鹏教授整理并发布的中文自然语言处理工具列表,以供参考 ——
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。