自然语言处理指南(第四部分)
了解文件
我们在这里还在谈论理解文件。让我们继续!
其他用途
您可以使用相同的技巧为不同的任务创建摘要。对于更高级和基于语义的应用程序尤其如此。请注意,为许多文档只创建一个摘要也是一个不同的任务。这是因为你必须考虑到不同的文件长度,避免重复等等。
有一种自然语言应用是识别类似的文件。如果您可以设计一种方法来识别一个文档中最有意义的句子,那么您还可以比较两个文档的含义。
这个技术的另一种应用是信息检索。简而言之,如果用户搜索一个单词 - 比方说 汽车 - 您可以使用其中的一些技术来查找包含汽车的文档。
最后,还有话题建模,其中包括查找一批文档的主题。简而言之,这意味着将具有相似主题的单词分组在一起。它使用更复杂的统计方法,用于创建摘要。目前的最新技术是基于称为潜在狄利克雷分配的方法。
Gensim是一个非常受欢迎的,可用于生产的库,有许多这样的应用程序。自然,它是用Python编写的。
Mallet是一个主要为话题建模而设计的Java库。
解析文档
大多数计算机语言很容易解析。对于自然语言来说这是不正确的。有一些方法可以给出好的结果,但最终这仍然是一个开放的研究领域。从根本上讲,问题是解析一个句子(即分析它的语法)及其含义是以一种自然语言相互联系的。一个主语,一个动词,一个名词或副词都是单词,大多数可以做主语单词也可以是宾语。
实际上,这意味着没有任何可以使用的库,对于你所能想到的每一个用途都是有好处的。我们提出了一些可以用于限制性任务的库,比如识别谈话片段也可以用于改进其他方法,像创建摘要的方法。
还有一个令人沮丧的事实是,很多软件是由学术研究人员制作的,这意味着它可以被很容易地放弃,由于另一种方法或缺乏文档。你不能真正使用一个未完成的,维护不当的软件来生产任何东西。特别是如果你关心英语以外的其他语言,你可能会发现自己看到了一个十年前写的好的工作演示,没有任何联系信息,没有任何开源代码。
你需要数据
为了通过解析或者从自然语言文档中广泛地提取信息来获得任何类型的结果,需要大量的数据来训练算法。这组数据被称为语料库。为了在使用统计或机器学习技术的系统中使用,您可能只需要将很多真实世界的数据划分为适当的组(即维基百科的文章按类别划分)。
但是,如果您正在使用智能系统,则可能需要手动构建或注释该数据集(即,dog是具有这些X可能含义的名词)。一个智能系统是试图模仿人类理解的系统,或者至少是使用人类可以遵循的过程。例如,依赖于使用短语>主语动词(短语由主语和动词构成)等规则的语法的分析器,还定义了几类人类通常不会使用的动词(即与运动相关的动词)。
在这些情况下,语料库通常使用自定义格式,并为特定需求而构建。例如,这个可以回答关于美国的地理问题的系统使用以Prolog格式存储的信息。自然的结果是,即使是一般可用的信息,如字典数据,在不同的程序之间也是不兼容的。
另一方面,也有很好的数据库是非常有价值的,许多程序都围绕它们建立。WordNet就是这样的数据库的一个例子。它是一个词汇数据库,将具有相似含义的单词组(即同义词)与其相关联的定义链接起来。它作为一个字典和一个词库。原来的版本是英文的,但它激发了其他语言的类似数据库。
你可以做什么
我们提出了一些构建自己的图书馆来理解文本的实际挑战。而且我们甚至没有提到与人类语言模糊有关的所有问题。所以,与过去的部分不同,我们只是要解释你能做什么。我们不会解释用于实现它们的算法,因为没有空间,也没有必要的数据,它们将毫无价值。相反,在下一段中,我们将介绍可以用来实现所需内容的最常用的库。
命名实体识别
命名实体识别基本上意味着找到文档中提到的实体。例如, 约翰·史密斯(John Smithis)去意大利时,应该把约翰·史密斯 和意大利确定 为实体。它也应该能在不同的文档中追踪它们。
情绪分析
情感分析将短语表达的情绪分类。从最基本的角度来说,这意味着要理解一个短语是表示正面还是负面的陈述。朴素贝叶斯分类器可以满足这个层次的理解。它的工作方式与垃圾邮件过滤器的工作方式类似:依据每个单词出现在两个类别中的任何一个的概率,将邮件划分为两类(即垃圾邮件和非垃圾邮件)。
另一种方法是手动将情绪排名与单词相关联。例如,-10 / -5和0之间的值为灾难性的,0和5/10之间的值为好。
如果你需要一个更微妙的评估,你需要采取机器学习技术。
部分的词性标注
词性标注部分(通常缩写为POS标签)表示对不同词类(即什么是名词,动词,形容词等)的识别和标记。虽然是解析的一个组成部分,但也可以用来简化其他任务。例如,它可以用于创建摘要,以简化为摘要选择的句子(即删除下属的子句)。
词形还原工具
一个词形还原工具返回给定单词和一个词性标签的引理。基本上,它给出了一个单词的相应字典形式。在某些方面,它可以被认为是一个先驱者的高级形式。它也可以用于类似的目的; 即它可以确保一个词的所有不同形式正确地连接到相同的概念。
例如,它可以将所有猫的实例转变成猫,为了搜索的目的。然而,它也可以的情况下,区分跑作为动词和跑步像在名词同义词慢跑中一样。
分块
词性标注的部分可以被认为等同于在自然语言中搜索。分块也称为浅层解析,是词性标注之上的一个步骤,但是在最后的解析之下。它以较高的意义单位连接词类,例如补语。想象一下,约翰总是赢得我们的俄罗斯轮盘赌比赛:
- POS-tagger标识俄语是形容词,轮盘赌是名词
- chunker将俄罗斯轮盘赌作为补充或两个相关的部分组合在一起
chunker可能会生成将被解析器使用的单元。它也可以独立工作,例如帮助命名实体识别。
解析
最终结果与计算机语言相同:分析树。尽管这个过程是完全不同的,它可能从概率语法开始,甚至根本没有语法。通常还会有很多概率和统计方法。
以下是斯坦福分析器(我们将在后面看到)为我的狗喜欢打猎猫和人的短语创建的解析树。NP等字母表示词性或补语。
(ROOT
(S
(NP (PRP$ My) (NN dog))
(VP (VBZ likes)
(NP (NN hunting) (NNS cats)
(CC and)
(NNS people)))))
翻译
目前最好的自动机器翻译方法依赖于机器学习。好消息是,这意味着您只需要使用您所关心的语言的大量文档,而无需任何注释。这些文本的典型来源是维基百科和欧盟的正式文件(要求文件以联盟的所有正式语言翻译)。
任何尝试过Google翻译或必应翻译的人都可以证明,结果总体上已经足够理解,但仍然经常有些偏离。他们不能取代人力翻译。
第四部分就是这样!下一次,我们将看到理解文档的最后一页,并概述最好的NLP库。
- 用Python将word文件转换成html
- 1行Python代码实现FTP服务器
- 100行Python代码实现自动抢火车票
- Python交互式数据分析报告框架:Dash
- PyQt5 GUI应用程序工具包入门(2)
- 用Python研究了三千套房子,告诉你究竟是什么抬高了房价?
- 设计模式之装饰模式
- Android网络编程(六)OkHttp3用法全解析
- Android网络编程(五)OkHttp用法全解析
- Android网络编程(一)HTTP协议原理
- Spring Cloud实战小贴士:Zuul统一异常处理(二)
- Android View体系(九)自定义View
- Android网络编程(二)HttpClient与HttpURLConnection
- Spring Batch入门篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python进阶(一)
- Python版本的OpenCV安装
- CVE-2020-16875:Microsoft Exchange RCE复现
- 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!
- Python高效编程之88条军规(2):你真的会格式化字符串吗?
- 搭建Typecho博客
- Python开发之Pandas的使用
- Python开发之numpy的使用
- flink sql实时计算当天pv写入mysql
- python爬取虎牙直播颜值区美女主播照片
- OpenCV图像处理笔记(三):霍夫变换、直方图、轮廓等综合应用
- 干货 | 高耦合场景下,Trip.com如何做支付设计与落地
- OpenCV图像处理笔记(二):图片操作进阶
- OpenCV图像处理笔记(一):图片基本操作
- BigData--Hadoop2.x新特性之HA