NLP工作原理的基本指南

NLP工作原理的基本指南

计算机非常适合处理电子表格和数据库表等结构化数据。但人类通常用文字而不是表格进行交流。这对计算机来说是不幸的。世界上很多信息都是非结构化的 - 英文原文或其他人类语言。我们如何让计算机理解非结构化文本并从中提取数据呢?

专注于人类语言和计算机之间相互作用的研究领域称为自然语言处理(简称NLP)。它位于计算机科学,人工智能和计算语言学的交叉点。NLP是计算机以智能和有用的方式分析,理解和从人类语言中获得意义的一种方式。简单来说,自然语言处理(NLP)是人工智能的子领域,专注于使计算机能够理解和处理人类语言。让我们看看NLP是如何工作的,这样计算机就可以理解非结构化文本并从中提取数据。

电脑懂英语吗?

计算机出现以后,程序员就一直在尝试编写能够理解英语等语言的程序。原因很明显 - 人类已经写下了几千年的事情,如果计算机可以阅读和理解所有数据,那将非常有用。

计算机还没有像人类那样真正地理解英语 - 但是他们已经做了很多事情!在有限的某些领域,你用NLP做的事情似乎已经变得神奇了。通过将NLP技术应用于您自己的项目,您可以节省大量时间。

NLP的最新进展可以通过开源Python库轻松访问,如spaCy,textacy和neuralcoref。只需几行Python代码即可完成的工作令人惊叹。

从文本中提取语义很难

阅读和理解英语的过程非常复杂 - 甚至不考虑英语不符合逻辑和一致的规则。例如,这个新闻标题是什么意思?

“Environmental regulators grill business owner over illegal coal fires.”

Are the regulators questioning a business owner about burning coal illegally? Or are the regulators literally cooking the business owner?如您所见,使用计算机解析英语将变得复杂。

这个想法是把你的问题分解成非常小的部分,然后使用机器学习单独解决每个小的部分。然后,通过将几个相互反馈的机器学习模型链接在一起,您可以做非常复杂的事情。

这正是我们在NLP中使用的策略。我们将把理解英语的过程分成几个小块,看看每个小块是如何理解的。

了解如何构建NLP管道

我们来看一段文字:

London is the capital and most populous city of England and the United Kingdom. Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia. It was founded by the Romans, who named it Londinium.。

本段包含几个有用的事实。如果计算机可以阅读本文并理解伦敦是一座城市,伦敦位于英格兰,伦敦由罗马人定居等等。但要实现这一目标,我们必须首先向我们的计算机传授书面语言的最基本概念。

构建NLP管道的步骤

第1步:句子分割

NLP工作原理的基本指南

管道中的第一步是将文本分成单独的句子。这给了我们这个:

  1. “伦敦是英格兰和英国人口最多,人口最多的城市。”
  2. “站在大不列颠岛东南部的泰晤士河上,伦敦已成为两千年来的主要定居点。”
  3. “它是由罗马人建立的,他们将它命名为Londinium。”

我们可以假设英语中的每个句子都是一个单独的思想或想法。编写程序来理解单个句子要比理解整个段落容易得多。

编写句子分割模型就像在看到标点符号时将句子分开一样简单。但是,现代NLP管道通常使用更复杂的技术,即使文档的格式化不干净也能正常工作。

第2步:单词标记

现在我们已将文档拆分为句子,我们可以一次处理一个。让我们从文档中的第一句开始:

“London is the capital and most populous city of England and the United Kingdom.”

我们的管道中的下一步是将这个句子分成单独的单词或标记。这称为标记化。这是结果:

“London”, “is”, “ the”, “capital”, “and”, “most”, “populous”, “city”, “of”, “England”, “and”, “the”, “United”, “Kingdom”, “.”

令牌化很容易用英语完成。只要它们之间有空格,我们就会将它们分开。我们还将标点符号视为单独的标记,因为标点符号也有意义。

第3步:预测每个令牌的词性

接下来,我们将查看每个标记并尝试猜测它的词性 - 无论是名词,动词还是形容词等等。知道每个单词在句子中的作用将有助于我们开始弄清楚句子在说什么。

我们可以通过将每个单词(以及围绕它的一些额外单词)提供给预训练的词性分类模型来实现:

NLP工作原理的基本指南

有了这些信息,我们就可以开始收集一些非常基本的含义。例如,我们可以看到句子中的名词包括“伦敦”和“首都”,所以这句话可能是在谈论伦敦。

第4步:文本词形还原

在英语(和大多数语言)中,单词以不同的形式出现。看看这两句话:

  • I had a pony.
  • I had two ponies.

两个句子都谈论名词小马,但他们使用不同的变形。在计算机中处理文本时,了解每个单词的基本形式是有帮助的,这样您就知道两个句子都在谈论相同的概念。否则,字符串“pony”和“ponies”看起来像两个完全不同的单词。

在NLP中,我们称之为发现这个过程的词形化 - 找出句子中每个单词的最基本形式或引理。

同样的事情也适用于动词。我们还可以通过找到它们的根,未共轭的形式来使动词变形。所以“ I had two ponies ”变成“ I [have] two [pony].”

词形还原通常通过根据词性的单词形成词汇形式的查找表来完成,并且可能具有一些自定义规则来处理您以前从未见过的词。

这是我的句子在词形结构添加动词的根形式后的样子:

NLP工作原理的基本指南

我们所做的唯一改变就是将“is”变成“be”。

第5步:识别停止词(Stop Words)

接下来,我们要考虑句子中每个单词的重要性。英语有很多填充词,经常出现像“and”,“the”和“a”。在对文本进行统计时,这些词会引入很多噪音,因为它们比其他词更频繁地出现。一些NLP管道会将它们标记为停止词 - 也就是说,在进行任何统计分析之前,您可能希望过滤掉这些词。

这是我们的句子看起来如何用停用词变灰:

NLP工作原理的基本指南

通常通过检查已知停止词的硬编码列表来识别停止词。但是没有适用于所有应用程序的标准停止词列表。要忽略的单词列表可能因应用程序而异。

例如,如果您正在构建摇滚乐队搜索引擎,则需要确保不要忽略单词“The”。因为“The”这个词不仅出现在很多乐队的名字中,还有着名的1980年代摇滚乐队The The!

第6步:依赖性解析

下一步是弄清楚句子中的所有单词是如何相互关联的。这称为依赖解析。

目标是构建一个树,为句子中的每个单词分配一个父单词。树的根是句子中的主要动词。下面是解析树的开头:

NLP工作原理的基本指南

但我们可以更进一步。除了识别每个单词的父单词外,我们还可以预测这两个单词之间存在的关系类型:

NLP工作原理的基本指南

这个解析树告诉我们句子的主语是名词“ London ”,它与“ capital ” 有“ be ”关系。我们终于知道一些有用的东西 - London是一个capital !如果我们按照句子的完整解析树,我们甚至会发现London是英国的首都。

就像我们之前使用机器学习模型预测词性一样,依赖性解析也可以通过将单词输入机器学习模型并输出结果来实现。但是,解析单词依赖性是一项特别复杂的任务。

同样重要的是要记住,许多英语句子含糊不清,而且很难解析。在这些情况下,机器学习模型将基于句子的解析版本最有可能进行猜测,但它并不完美,有时模型会出现令人尴尬的错误。但随着时间的推移,我们的NLP模型将继续以合理的方式更好地解析文本。

第7步:寻找名词短语

到目前为止,我们已将句子中的每个单词视为一个单独的实体。但有时将表示单个想法或事物的词组合在一起更有意义。我们可以使用依赖关系解析树中的信息自动将所有谈论同一事物的单词组合在一起。

例如,而不是这样:

NLP工作原理的基本指南

我们可以对名词短语进行分组以生成:

NLP工作原理的基本指南

我们是否采取这一步骤取决于我们的最终目标。但是,如果我们不需要关于哪些词是形容词的额外细节而是更多地关注提取完整的想法,那么这通常是简化句子的快速简便方法。

第8步:命名实体识别(NER)

既然我们已经完成了所有艰苦的工作,我们终于可以超越小学语法并开始实际提取想法。

在我们的句子中,我们有以下名词:

NLP工作原理的基本指南

这些名词中的一些呈现出世界上真实的东西。例如,“ London”,“England”和“United Kingdom”代表地图上的物理位置。能够检测到它会很高兴!有了这些信息,我们就可以使用NLP自动提取文档中提到的真实世界位置列表。

命名实体识别(NER)的目标是使用它们所代表的真实世界概念来检测和标记这些名词。这是我们的句子通过我们的NER标记模型运行每个标记后的样子:

NLP工作原理的基本指南

但NER系统不只是进行简单的字典查找。相反,他们使用单词如何出现在句子中的上下文和统计模型来猜测单词代表哪种类型的名词。一个好的NER系统可以通过上下文线索区分“Brooklyn Decker”这个人和“Brooklyn”这个地方。

以下是典型NER系统可以标记的一些对象:

  • 人的名字
  • 公司名称
  • 地理位置(物理和政治)
  • 产品名称
  • 日期和时间
  • 金额
  • 事件名称

NER有很多用途,因为它可以很容易地从文本中获取结构化数据。这是快速从NLP管道中获取价值的最简单方法之一。

第9步:共同决议

在这一点上,我们已经有了一个有用的句子表示。我们知道每个单词的词性,单词如何相互关联以及哪些单词在谈论命名实体。

但是,我们还有一个大问题。英语中充满了代词 - 像he,she和it这样的单词。这些是我们使用的快捷方式,而不是在每个句子中反复写出名称。人类可以根据背景跟踪这些词所代表的内容。但是我们的NLP模型并不知道代词的意思,因为它只能一次检查一个句子。

让我们看一下文档中的第三句话:

“It was founded by the Romans, who named it Londinium.”

如果我们用NLP管道解析这个问题,我们就会知道“it”是罗马人创立的。但要知道“London”是由罗马人创立的,更有用。

作为一个阅读这句话的人,你可以很容易地发现“ it”的意思是“ London”。共参考解决方案的目标是通过跟踪句子中的代词来找出相同的映射。我们想弄清楚所有指向同一实体的单词。

以下是在我们的文档中为“London”一词运行共识解析的结果:

NLP工作原理的基本指南

通过将共享信息与解析树和命名实体信息相结合,我们应该能够从该文档中提取大量信息!

Coreference解决方案是我们管道实施中最困难的步骤之一。它比句子解析更难。深度学习的最新进展已经导致更准确的新方法,但它还不完美。

结束NLP的工作

这只是对NLP可以做些什么的一点点尝试。如果你喜欢这些文章,请关注并转发!

相关推荐