NLP 教程

2025年3月17日 | 阅读 12 分钟

NLP 教程提供了 NLP 教程的基础和高级概念。我们的 NLP 教程专为初学者和专业人士设计。


什么是NLP?

NLP 代表 自然语言处理,它是 计算机科学、人类语言人工智能 的一部分。它是机器用于理解、分析、操作和解释人类语言的技术。它帮助开发人员组织知识以执行诸如 翻译、自动摘要、命名实体识别 (NER)、语音识别、关系提取主题分段 等任务。

What is NLP

NLP 历史

(1940-1960) - 专注于机器翻译 (MT)

自然语言处理始于 20 世纪 40 年代。

1948 - 1948 年,第一个可识别的 NLP 应用在伦敦的伯克贝克学院推出。

20 世纪 50 年代 - 20 世纪 50 年代,语言学和计算机科学之间存在冲突的观点。现在,乔姆斯基出版了他的第一本书《句法结构》,并声称语言本质上是生成性的。

1957 年,乔姆斯基还提出了生成语法(Generative Grammar)的思想,这是一种基于规则的句法结构描述。

(1960-1980) - 受到人工智能 (AI) 的影响

在 1960 年至 1980 年期间,主要发展是:

增强型转换网络 (ATN)

增强型转换网络 (ATN) 是一种能够识别常规语言的有限状态机。

格语法

格语法由 语言学家 Charles J. Fillmore 于 1968 年开发。格语法使用像英语这样的语言,通过使用介词来表达名词和动词之间的关系。

在格语法中,可以定义格角色来链接特定类型的动词和宾语。

例如:“Neha broke the mirror with the hammer”(Neha 用锤子打碎了镜子)。在这个例子中,格语法将 Neha 识别为施事者,mirror 识别为受事者,hammer 识别为工具。

在 1960 年至 1980 年期间,关键系统是:

SHRDLU

SHRDLU 是 Terry Winograd 在 1968-70 年编写的一个程序。它帮助用户与计算机通信并移动对象。它可以处理诸如“捡起绿色的球”之类的指令,并回答“黑盒子里有什么?”之类的问题。SHRDLU 的主要重要性在于它展示了语法、语义和对世界的推理可以结合起来,形成一个能够理解自然语言的系统。

LUNAR

LUNAR 是一个经典的自然语言数据库接口系统示例,它使用了 ATN 和 Woods 的程序语义。它能够将复杂的自然语言表达式翻译成数据库查询,并且 78% 的请求都能无误地处理。

1980 年至今

直到 1980 年,自然语言处理系统都基于一套复杂的、手工编写的规则。1980 年之后,NLP 引入了机器学习算法进行语言处理。

在 20 世纪 90 年代初,NLP 开始快速发展并取得了很好的准确率,尤其是在英语语法方面。1990 年,电子文本的出现为训练和测试自然语言程序提供了很好的资源。其他因素可能包括具有快速 CPU 和更多内存的计算机的可用性。自然语言处理进步的主要因素是互联网。

现在,现代 NLP 包括各种应用,如语音识别、机器翻译机器文本阅读。当我们结合所有这些应用时,它就能使人工智能获得对世界的认识。让我们以 AMAZON ALEXA 为例,使用这个机器人,您可以向 Alexa 提问,它会给您回复。


NLP 的优点

  • NLP 帮助用户就任何主题提问,并在几秒钟内获得直接回复。
  • NLP 提供问题的确切答案,这意味着它不会提供不必要和不受欢迎的信息。
  • NLP 帮助计算机用人类的语言与人类交流。
  • 它非常节省时间。
  • 大多数公司使用 NLP 来提高文档处理的效率、文档的准确性,并从大型数据库中识别信息。

NLP 的缺点

下面列出了 NLP 的缺点:

  • NLP 可能无法显示上下文。
  • NLP 是不可预测的
  • NLP 可能需要更多的按键操作。
  • NLP 无法适应新领域,并且功能有限,因此 NLP 是为单一特定任务构建的。

NLP 的组成部分

NLP 包含以下两个组成部分:

1. 自然语言理解 (NLU)

自然语言理解 (NLU) 帮助机器通过从内容中提取元数据,如概念、实体、关键字、情感、关系和语义角色,来理解和分析人类语言。

NLU 主要用于商业应用程序,以理解客户在口语和书面语言中的问题。

NLU 包括以下任务:

  • 它用于将给定的输入映射到有用的表示。
  • 它用于分析语言的各个方面。

2. 自然语言生成 (NLG)

自然语言生成 (NLG) 充当翻译器,将计算机数据转换为自然语言表示。它主要包括文本规划、句子规划和文本实现。

注意:NLU 比 NLG 困难。

NLU 和 NLG 之间的区别

NLUNLG
NLU 是阅读和理解语言的过程。NLG 是编写或生成语言的过程。
它从自然语言输入生成非语言输出。它从非语言输入生成自然语言输出。

NLP的应用

NLP 的应用如下:

1. 问答

问答系统专注于构建能够自动回答人类用自然语言提出的问题的系统。

Applications of NLP

2. 垃圾邮件检测

垃圾邮件检测用于检测发送到用户收件箱的不需要的电子邮件。

Applications of NLP

3. 情感分析

情感分析也称为意见挖掘。它在网上用于分析发送者的态度、行为和情绪状态。此应用程序通过结合 NLP(自然语言处理)和统计学来实现,为文本分配值(积极、消极或中性),识别上下文的情绪(快乐、悲伤、愤怒等)。

Applications of NLP

4. 机器翻译

机器翻译用于将文本或语音从一种自然语言翻译成另一种自然语言。

Applications of NLP

示例: 谷歌翻译

5. 拼写检查

微软公司提供 MS-word、PowerPoint 等文字处理软件进行拼写检查。

Applications of NLP

6. 语音识别

语音识别用于将语音转换为文本。它用于各种应用程序,例如手机、家庭自动化、视频恢复、向 Microsoft Word 听写、语音生物识别、语音用户界面等。

7. 聊天机器人

实现聊天机器人是 NLP 的重要应用之一。许多公司使用它来提供客户聊天服务。

Applications of NLP

8. 信息提取

信息提取是 NLP 最重要的应用之一。它用于从非结构化或半结构化的机器可读文档中提取结构化信息。

9. 自然语言理解 (NLU)

它将大量的文本转换为更正式的表示,例如一阶逻辑结构,这些结构更容易被计算机程序处理自然语言处理的符号。


如何构建 NLP 流水线

构建 NLP 流水线的步骤如下:

步骤 1:句子分割

句子分割是构建 NLP 流水线的第一步。它将段落分解成独立的句子。

示例:考虑以下段落 -

独立日是每个印度公民最重要的节日之一。自印度从英国统治下独立以来,每年 8 月 15 日都会庆祝这一天。这一天真正意义上庆祝了独立。

句子分割产生以下结果:

  1. "独立日是每个印度公民最重要的节日之一。"
  2. "自印度从英国统治下独立以来,每年 8 月 15 日都会庆祝这一天。"
  3. "这一天真正意义上庆祝了独立。"

步骤 2:词语分词

词语分词器用于将句子分解成单独的词语或标记。

示例

JavaTpoint 提供企业培训、暑期培训、在线培训和冬季培训。

词语分词器生成以下结果:

"JavaTpoint", "offers", "Corporate", "Training", "Summer", "Training", "Online", "Training", "and", "Winter", "Training", "."

步骤 3:词干提取

词干提取用于将词语规范化为其基本形式或词根形式。例如,celebrates、celebrated 和 celebrating,这些词都源自同一个词根“celebrate”。词干提取的一个大问题是,它有时会产生一个可能没有意义的词根。

例如: intelligence、intelligent 和 intelligently,这些词都源自同一个词根“intelligen”。在英语中,“intelligen”这个词没有意义。

步骤 4:词形还原

词形还原与词干提取非常相似。它用于将单词的不同屈折形式组合起来,称为词元(Lemma)。词干提取和词形还原的主要区别在于,词形还原产生的词根具有意义。

例如:在词形还原中,单词 intelligence、intelligent 和 intelligently 有一个词根 intelligent,它是有意义的。

步骤 5:识别停用词

在英语中,有很多词语出现的频率非常高,例如“is”、“and”、“the”和“a”。NLP 流水线会将这些词标记为停用词。在进行任何统计分析之前,可以过滤掉停用词

示例: He is a good boy.(他是一个好孩子。)

注意:当你构建一个摇滚乐队搜索引擎时,你不会忽略“The”这个词。

步骤 6:依赖关系解析

依赖关系解析用于确定句子中的所有单词是如何相互关联的。

步骤 7:词性标记 (POS tags)

POS 代表词性,包括名词、动词、副词和形容词。它表明一个词如何根据其含义和在句子中的语法功能。一个词根据它使用的上下文,可以有一个或多个词性。

示例: 在互联网上 "Google" 搜索某物。

在上面的例子中,“Google”被用作动词,尽管它是一个专有名词。

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

命名实体识别 (NER) 是检测命名实体(如人名、电影名、组织名或地点名)的过程。

示例: Steve Jobs 在旧金山的 Macworld 大会上发布了 iPhone,加利福尼亚。

步骤 9:分块 (Chunking)

分块用于收集单独的信息片段并将它们组合成更大的句子片段。


NLP 的阶段

NLP 有以下五个阶段:

Phases of NLP

1. 词法分析和形态分析

NLP 的第一阶段是词法分析。此阶段扫描源代码作为字符流,并将其转换为有意义的词元。它将整个文本划分为段落、句子和单词。

2. 句法分析 (Parsing)

句法分析用于检查语法、词语排列,并显示词语之间的关系。

示例: Agra goes to the Poonam(阿格拉去 Poonam)

在现实世界中,“Agra goes to the Poonam”没有意义,因此这个句子被句法分析器拒绝。

3. 语义分析

语义分析涉及意义表示。它主要关注单词、短语和句子的字面意义。

4. 语篇整合

语篇整合取决于其前面的句子,并且还调用其后面句子的含义。

5. 语用分析

语用学是 NLP 的第五个也是最后一个阶段。它通过应用一套描述合作对话的规则来帮助你发现预期的效果。

例如:“Open the door”(开门)被解释为请求而不是命令。


为什么 NLP 很难?

NLP 很难,因为语言中存在歧义和不确定性。

歧义

存在以下三种歧义:

  • 词法歧义

当句子中的单个词语存在两个或多个可能的含义时,就存在词法歧义。

示例

Manya is looking for a match.(Manya 正在寻找一个火柴/匹配对象。)

在上面的例子中,单词“match”指的是 Manya 正在寻找一个伴侣,还是 Manya 正在寻找一场比赛(板球或其他比赛)。

  • 句法歧义

当句子中存在两个或多个可能的含义时,就存在句法歧义。

示例

I saw the girl with the binocular.(我看到了那个拿着望远镜的女孩。)

在上面的例子中,是我有望远镜吗?还是那个女孩有望远镜?

  • 指代歧义

当您使用代词来指代某物时,就存在指代歧义。

示例: Kiran went to Sunita. She said, "I am hungry."(Kiran 去了 Sunita。她说:“我饿了。”)

在上面的句子中,你不知道谁饿了,是 Kiran 还是 Sunita。


NLP API

自然语言处理 API 允许开发人员集成人机通信,并完成多项有用的任务,例如语音识别、聊天机器人、拼写校正、情感分析等。

下面列出了 NLP API:

  • IBM Watson API
    IBM Watson API 结合了各种先进的机器学习技术,使开发人员能够将文本分类到各种自定义类别中。它支持多种语言,如英语、法语、西班牙语、德语、中文等。借助 IBM Watson API,您可以从文本中提取见解,在工作流程中添加自动化,增强搜索功能,并理解情感。此 API 的主要优点是易于使用。
    定价:首先,它提供 30 天免费试用的 IBM 云账户。您也可以选择其付费套餐。
  • 聊天机器人 API
    聊天机器人 API 允许您为任何服务创建智能聊天机器人。它支持 Unicode 字符,分类文本,多种语言等。它非常易于使用。它可以帮助您为 Web 应用程序创建聊天机器人。
    定价:聊天机器人 API 每月免费 150 次请求。您也可以选择其付费版本,价格从每月 100 美元到 5,000 美元不等。
  • 语音转文本 API
    语音转文本 API 用于将语音转换为文本。
    定价:语音转文本 API 每月免费转换 60 分钟。其付费版本每月价格从 500 美元到 1,500 美元不等。
  • 情感分析 API
    情感分析 API 也称为“意见挖掘”,用于识别用户的语气(积极、消极或中性)。
    定价:情感分析 API 每月少于 500 次请求免费。其付费版本每月价格从 19 美元到 99 美元不等。
  • SYSTRAN 的翻译 API
    SYSTRAN 的翻译 API 用于将文本从源语言翻译成目标语言。您可以使用其 NLP API 进行语言检测、文本分段、命名实体识别、分词以及许多其他任务。
    定价:此 API 可免费使用。但对于商业用户,您需要使用其付费版本。
  • AYLIEN 的文本分析 API
    AYLIEN 的文本分析 API 用于从文本内容中提取含义和见解。它提供免费版本,付费版本从每月 119 美元起。易于使用。
    定价:此 API 每天免费提供 1,000 次命中。您也可以使用其付费版本,价格从每月 199 美元到 1,399 美元不等。
  • Cloud NLP API
    Cloud NLP API 用于使用自然语言处理技术来增强应用程序的功能。它允许您执行各种自然语言处理功能,如情感分析和语言检测。易于使用。
    定价: Cloud NLP API 可免费使用。
  • Google Cloud 自然语言 API
    Google Cloud 自然语言 API 允许您从非结构化文本中提取有价值的见解。此 API 允许您在 700 多个预定义类别中执行实体识别、情感分析、内容分类和语法分析。它还允许您用多种语言(如英语、法语、中文和德语)进行文本分析。
    定价:在执行 5,000 到 10,000,000 个单位的实体分析后,您需要按每月每 1000 个单位支付 1.00 美元。

NLP 库

Scikit-learn:它提供了广泛的算法来在 Python 中构建机器学习模型。

自然语言工具包 (NLTK): NLTK 是所有 NLP 技术的完整工具包。

Pattern:它是一个用于 NLP 和机器学习的 Web 挖掘模块。

TextBlob:它提供了一个简单的接口来学习基本的 NLP 任务,如情感分析、名词短语提取或词性标记。

Quepy:Quepy 用于将自然语言问题转换为数据库查询语言中的查询。

SpaCy:SpaCy 是一个开源 NLP 库,用于数据提取、数据分析、情感分析和文本摘要。

Gensim:Gensim 可以处理大型数据集并处理数据流。


自然语言与计算机语言的区别

自然语言计算机语言
自然语言的词汇量非常大。计算机语言的词汇量非常有限。
人类很容易理解自然语言。机器很容易理解计算机语言。
自然语言本质上是模糊的。计算机语言是明确的。

前提条件

在学习 NLP 之前,您必须具备 Python 的基础知识。

目标受众

我们的 NLP 教程旨在帮助初学者。

问题

我们保证您在本 NLP 教程中不会遇到任何问题。但如果存在任何错误或失误,请在联系表格中提交错误。