【使用 BERT 的问答系统】第 1 章 : 自然语言处理简介

news2024/11/26 0:56:27

     🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

自然语言处理

句子分割

Tokenization

词性标注

词干和词形还原

停止词的识别

短语提取

命名实体识别

共指消解

词袋

结论


随着最近技术的进步,通信是出现革命性发展的领域之一。通信和信息构成了现代社会的支柱,正是语言和通信导致了人类知识在各个领域的这种进步。人类一直对机器或机器人具有类似人类的能力来用我们的语言进行交谈的想法着迷。许多科幻书籍和媒体都讨论过这个话题。图灵测试就是为此目的而设计的,以测试人类是否能够破译通信通道另一端的实体是人还是机器。

对于计算机,我们从计算机可以解释的二进制语言开始,然后根据指令进行计算。然而,随着时间的推移,我们提出了过程语言和面向对象的语言,这些语言使用更自然的语言语法和指令,并且与人类交流的词语和方式相对应。此类构造的示例是 for 循环和 if 构造。

随着计算能力的提高和计算机处理大量数据的能力的提高,使用机器学习 (ML)和深度学习模型来理解人类语言变得更加容易。随着神经网络、递归神经网络 (RNN)和其他深度学习技术的普及以及运行这些模型的计算能力的可用,开发人员可以使用各种自然语言处理 (NLP)平台在云端和其他平台上工作前提。本章将带您了解 NLP 的基础知识。

自然语言处理

NLP 是人工智能(AI)的一个分支, 它使计算机能够阅读、理解和处理人类语言。计算机很容易从电子表格、数据库、JavaScript 对象表示法 (JSON) 文件等结构化系统中读取数据。然而,很多信息都表示为非结构化数据,这对计算机理解和生成知识或信息来说非常具有挑战性。为了解决这些问题,NLP 提供了一套技术或方法论阅读、处理和理解人类语言并从中产生知识。目前,包括 IBM、谷歌、微软、Facebook、OpenAI 等在内的众多公司一直在提供各种 NLP 技术作为服务。一些开源库,如 NLTK、spaCy 等,也是分解和理解语言文本背后含义的关键推动者。

众所周知,文本的处理和理解是一个非常复杂的问题。数据科学家、研究人员和开发人员一直在通过构建管道来解决 NLP 问题:将 NLP 问题分解成更小的部分;使用相应的 NLP 技术和 ML 方法(如实体识别、文档摘要等)解决每个子部分;最后将所有零件或模型组合或堆叠在一起作为问题的最终解决方案。

NLP的主要目标是教机器如何解释和理解语言。任何语言,如英语、编程结构、数学等,都涉及以下三个主要组成部分:
  • 语法 :定义文本中单词排序的规则。例如,主语、动词和宾语的顺序应该正确,句子的句法才正确。

  • 语义 :定义文本中单词的含义以及这些单词应该如何组合在一起。例如,在“我想将钱存入此银行帐户”这句话中,“银行”一词指的是金融机构。

  • 语用学 :定义特定上下文中单词的用法或选择。例如,“银行”这个词可以根据上下文有不同的含义。例如,“银行”也可以指金融机构或河边的土地。

出于这个原因,NLP 采用不同的方法从文本或语音中提取这些成分,以生成将用于下游任务的特征,例如文本分类、实体提取、语言翻译和文档摘要。自然语言理解 (NLU),NLP 的一个分支,旨在从文档、网页等中理解和生成知识。此处列出了一些示例。
  • 语言翻译:语言翻译被认为是 NLP 和 NLU 中最复杂的问题之一。您可以提供文本片段或文档,这些系统会将它们转换成另一种语言。谷歌、微软和 IBM 等一些主要的云供应商将此功能作为服务提供,任何人都可以将其用于基于 NLP 的系统。例如,从事对话系统开发的开发人员可以利用这些供应商的翻译服务在对话系统中启用多语言功能,甚至无需进行任何实际开发。

  • 问答系统 :如果你想实现一个系统来从文档、段落、数据库或任何其他系统中找到问题的答案,这种类型的系统非常有用。在这里,NLU 负责理解用户的查询以及包含该问题答案的文档或段落(非结构化文本)。问答系统存在一些变体,例如基于阅读理解的系统、数学系统、多项选择系统、问答系统等。

  • 支持工单的自动路由 :这些系统通读客户支持工单的内容并将其路由给可以解决问题的人。在这里,NLU 使这些系统能够处理和理解电子邮件、主题、聊天数据等,并将它们路由到适当的支持人员,从而避免由于错误分配而导致的额外跃点。

问答系统、机器翻译、命名实体识别 (NER)、文档摘要、词性 (POS) 标记和搜索引擎等系统是基于 NLP的系统的一些示例。

例如,请考虑维基百科文章“机器学习”中的以下文本。

机器学习 (ML)是对算法和统计模型的科学研究,计算机系统使用这些算法和统计模型来执行特定任务,而无需使用明确的指令,而是依赖于模式和推理。机器学习算法用于各种应用,例如电子邮件过滤和计算机视觉。它可以分为两种类型,即监督学习和非监督学习。

此文本包含许多可用作信息的有用数据。如果计算机能够阅读、理解并回答文本中的以下问题,那就太好了:
  • 机器学习的应用有哪些?

  • 机器学习指的是什么类型的研究?

  • 计算机使用什么类型的模型来执行特定任务?

应该有一些方法可以教机器语言的基本概念和规则,以便它们可以阅读、处理和理解文本。为了从文本中获得洞察力,NLP 技术将所有步骤组合到一个称为 NLP/ML 管道的管道中。以下是 NLP流水线的一些步骤。
  • 句子分割

  • Tokenization

  • 词性标注

  • 词干提取和词形还原

  • 停用词的识别

句子分割

管道中的第一步是将文本片段分割成单独的句子,如此处所示。
  • 机器学习 (ML) 是对算法和统计模型的科学研究,计算机系统使用这些算法和统计模型来执行特定任务,而无需使用明确的指令,而是依赖于模式和推理。

  • 机器学习算法用于各种应用,例如电子邮件过滤和计算机视觉。

  • 它可以分为两种类型,即监督学习和非监督学习。

早期的句子分割实现非常简单,只需根据标点符号或“句号”来分割文本。但是,当文档或一段文本格式不正确或语法不正确时,有时会失败。现在,有一些高级的 NLP 方法,例如序列学习,即使句号不存在或文档格式不正确,也能分割一段文本,基本上是通过使用语义理解和句法理解来分解文本来提取短语。

Tokenization

NLP 管道中的下一个任务是标记化 。在此任务中,我们将每个句子分成多个标记。标记可以是字符、单词或短语。标记化中使用的基本方法是将一个句子拆分成单独的单词,只要它们之间有空格。例如,考虑我们示例文本中的第二句话:“机器学习算法用于各种应用程序,例如电子邮件过滤和计算机视觉。” 这是将标记化应用于此示例的结果。

["Machine", "learning", "algorithms", "are", "used", "in" , "a", "wide", "variety", "of", "applications", "such", "as", "email", "filtering", "and", "computer", "vision"].

但是,有一些高级标记化方法,例如可以从句子中提取短语的马尔可夫链模型。例如,可以通过应用高级 ML 和 NLP 方法将“机器学习”提取为短语。

词性标注

词性标注是下一步,用于确定从标记化步骤中提取的每个标记或单词的词性。这有助于我们识别每个单词的用法及其在句子中的意义。它还介绍了对句子含义的实际理解的第一步。赋予 POS 标签可以增加单词的维度,以提供给定单词试图赋予的含义的更详细信息。短语“putting on an act”和“act on instinct”都使用“act”一词,但分别用作名词和动词,因此 POS 标签可以极大地帮助区分含义。在这种方法中,我们将标记(称为 Word)传递给 POS 标记器(一个分类系统)以及一些上下文词,这些上下文词将用于对 Word 及其相关标签进行分类,如图1-1所示.

                                                                图 1-1  词性标注

这些模型在目标语言的大量(数百万或数十亿)文学句子语料库上进行训练,其中每个单词及其词性标签都用作词性分类器的训练数据。前面提到的模型完全基于训练数据的统计数据,而不是实际解释。该模型试图根据句子与历史句子的句法相似性为每个单词找到 POS 标签 。例如,对于句子“机器学习算法用于各种应用程序,例如电子邮件过滤和计算机视觉”,POS 标签如下所示:

Machine (NN) learning (NN) algorithms (NNS) are (VBP) used (VBN) in (IN) a (DT) wide (JJ) variety (NN) of (IN) applications (NNS), such (JJ) as (IN) email (NN) filtering (VBG) and (CC) computer (NN) vision (NN).

从这些结果中我们可以看出,有各种名词(即Machine、learning、variety、computervision)。因此我们可以得出结论,该句子可能在谈论机器和计算机。

词干和词形还原

有时 同一个词以不同的形式出现在多个句子中。词干提取可以定义为通过删除后缀将单词简化为词根或基本形式的过程。这里,缩减词可以是词典词或非词典词。例如,单词“machine”可以简化为词根形式“machin”。它没有考虑使用单词的上下文。这是我们例句的标记化单词的词干表示。

machin learn algorithm ar us in a wid vary of apply , such as email filt and comput vis

在这个结果中,一些词被表示为非字典词;例如,“machine”简化为“machin”,这是一个词干词而不是字典词。

词形还原可以定义为导出词的规范形式或词元的过程。它使用上下文来识别单词的词元,它必须是字典单词。然而,词干提取却不是这样。使用我们前面的例子,“机器”这个词将被转换成它的规范形式“机器”。以下是我们例句中标记化单词的词形还原表示。它使用单词标签作为上下文来导出单词的规范形式。

Machine learning algorithm be use in a wide variety of application , such a email filtering and computer vision.

在这些结果中,一些词,如“过滤”,被简化为它们的规范形式,在这种情况下是“过滤”,而不是“过滤”,因为“过滤”这个词在句子中被用作动词。

应根据要求谨慎使用词形还原和词干提取。例如,如果您正在使用搜索引擎系统,那么应该首选词干提取,但如果您正在处理问题回答,其中推理很重要,那么词形还原应该优先于词干提取。

停止词的识别

文本片段包含重要词和填充词。例如,在我们的例句中,这些是填充词。

["be", "use", "in", "a", "such", “a", "and"]
这些填充词会在您的文本中引入噪音,因此管理它们很重要,因为它们在文本中出现的频率很高,并且比其他词具有更高的频率和更低的重要性。一些系统使用这些停用词的预定义列表,例如“is”、“at”等。但是,这对某些域没有帮助。例如,在与医疗保健相关的文档中,您会发现一些常用术语,例如患者、医生或 ICU。这些词出现的频率很高,您需要以某种方式将它们从文本中删除。有两种方法通常用于处理特定领域的停用词。
  • 根据出现频率将词标记为停用词。它可能是最频繁的,也可能是最不频繁的。

  • 如果词在语料库中的所有文档中都很常见,则将它们标记为停用词。

短语提取

有时单个词不能为大多数 NLP 任务提供足够的信息。例如,此处显示了字典中“机器”和“学习”这两个词的含义。
  • 机器:使用机械动力来执行某些任务的装置。

  • 学习:通过学习、经验或被教导获得知识或技能。

从这两个词的定义可以很清楚地看出,我们的例句应该是在谈论某种机械装置和各种获取知识的媒介。但是,当这些词一起使用时(即“机器学习”),它指的是 AI 的一个分支,它涉及对计算机用于执行特定任务而无需明确编程的算法和统计模型进行科学研究。

为了提取短语,我们需要将多个单词组合在一起,或者识别短语。这里,短语可以分为两种类型,名词短语和动词短语。我们可以定义规则来从句子中提取短语。例如,要提取一个名词短语,我们可以定义这样一个规则:“一个句子中连续出现两次的名词应该被认为是一个名词短语。” 例如,短语“machine learning”在我们的例句中是一个名词短语。以类似的方式,我们可以定义更多的规则来从句子中提取名词短语和动词短语。

命名实体识别

实体被定义为对象或名词,例如人、组织或其他从文本中提供重要信息的对象。此信息可用作下游任务的特征。例如,Google、Microsoft 和 IBM 是Organization类型的实体。

NER 是一种信息提取技术,可根据训练模型将实体提取和分类。例如,英语中的一些基本类别是人名、组织、位置、日期、电子邮件地址、电话号码等。例如,在我们的示例句子中,“机器学习”和“计算机视觉”等短语是AI_Branch 类型的实体,它指的是 AI 的分支。

目前,IBM、谷歌、微软等人工智能领域的大型厂商都提供了经过训练的模型来从文本中提取命名实体。它们还使您能够构建自己的特定于您的应用程序和领域的 NER 模型。spaCy 等开源项目还提供了训练和使用您自己的自定义 NER 模型的能力。

共指消解

NLP 领域(尤其是英语)的主要挑战之一是代词的使用。在英语中,代词广泛用于指代先前上下文或句子中的名词。为了执行语义分析或识别这些句子之间的关系,系统应该以某种方式建立句子之间的依赖关系是非常重要的。

例如,考虑句子“它可以分为两种类型,即监督学习和非监督学习”,其中“它”在第一句和第二句中指的是机器学习。它可以通过在数据集中注释此类依赖关系以训练模型并在看不见的文本片段或文档上使用相同模型来提取此类关系来实现。

词袋

众所周知,计算机只处理数字数据;因此,要理解文本的含义,必须将其转换为数字形式。词袋是将文本转换为数字数据的方法之一。

词袋是一种非常流行的特征提取方法,它描述了文本中每个词的出现。您需要首先构建语料库的词汇表,然后计算语料库中每个文本片段或文档对应的每个单词的出现次数。它不存储任何与顺序或句子结构相关的信息。这就是为什么它被称为词袋。它还可以告诉您某个特定单词是否出现在文档中,但它不提供有关该单词在文档中的位置的任何信息。例如,考虑我们的示例文本片段,由于句子分割步骤,它已被分割成三个句子。
  • Sentence A::机器学习 (ML) 是对算法和统计模型的科学研究,计算机系统使用这些算法和统计模型来执行特定任务,而不使用显式指令,而是依赖于模式和推理。

  • Sentence B:机器学习算法用于各种应用,例如电子邮件过滤和计算机视觉。

  • Sentence C : 可以分为两种,即Supervised Learning和Unsupervised Learning。

图1-2是我们的示例文本片段的文档术语矩阵,其中如果句子中出现术语值为 1,否则为 0。

                                                                图 1-2  文档术语矩阵
一旦句子 或文本片段被转换为数字向量,我们就可以将这些向量值用作进一步下游任务的特征,例如问答系统、文本摘要等。此方法具有以下限制。
  • 句子的向量表示长度随着词汇量的增加而增加。这需要对下游任务进行更高的计算。它还增加了句子的维度。

  • 它无法根据文本中的上下文来识别具有相似含义的不同单词。

还有其他方法可以减少以向量形式表示句子的计算和内存要求。词嵌入是我们可以在低维空间中表示词同时保留词的语义的方法之一。稍后我们将详细了解词嵌入如何成为下游 NLP 任务的重大突破。

结论

本章讨论了 NLP 的基础知识,以及一些基本的 NLP 任务,例如标记化、词干提取等。在下一章中,我们将讨论 NLP 领域中的神经网络。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【车间调度】基于模拟退火优化算法的的并行车间机器优化调度(Matlab代码实现)

目录 1 概述 2并行机调度问题的的描述 3 模拟退火法 4 基于模拟退火优化算法的的并行车间机器优化调度(Matlab代码实现) 4.1 运行结果 5 参考文献 6 Matlab代码 1 概述 并行机调度(也称并行多机调度, Parallel MachinesScheduling Prob…

你不知道的npm

npm 前端工程化离不开 npm(node package manager) 或者 Yarn 这些管理工具。npm 或 Yarn 在工程项目中,除了负责依赖的安装和维护以外,还能通过 npm scripts 串联起各个职能部分,让独立的环节自动运转起来。 npm诞生…

跨平台.NET应用UI组件DevExpress XAF v22.1 - 增强Web API Service

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。&#xff…

Web进阶

目录 DOM节点操作(上) 一、任务目标 二、任务背景 三、任务内容 1、DOM结构及节点 DOM节点操作(下) 一、任务目标 二、任务背景 三、任务内容 1、DOM修改 DOM控制CSS样式 一、任务目标 二、任务背景 三、任务内容 …

达摩院快速动作识别TPS ECCV论文深入解读

一、论文&代码 论文:https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136630615.pdf 模型&代码:ModelScope 魔搭社区 二、背景 高效的时空建模(Spatiotemporal modeling)是视频理解和动作识别的核心问题。相较于图像的Transforme…

ArrayList源码分析

ArrayList源码分析 注意:本笔记分析对象为 Java8 版本,随版本不同,源码会发生变化。 1 ArrayList类图与简介 ArrayList是一个 非线程安全,基于数组实现的一个动态数组。可以看到,它的顶层接口是 Collection<E> 集合类。 Note: ArrayList 可以存放所有元素,包括 n…

C语言详细知识点(下)

⛄️上一篇⛄️C语言详细知识点&#xff08;上&#xff09; 文章目录五、数组1、一维数组的定义及使用2、二维数组的定义及使用3、字符数组的定义及使用六、函数1、函数的定义2、函数的调用3、函数的声明4、函数的嵌套调用5、函数的递归调用七、指针1、什么是指针2、指针变量3、…

如何用蓝牙实现无线定位(二)--信号塔设置

1. 配置BLE4.0模块 根据三点定位原理&#xff0c;本项目需要使用3个信号塔。3个信号塔的主体均为BLE4.0模块&#xff0c;需要把BLE4.0模块的AT指令设置为“从设备”。 方法为&#xff1a; &#xff08;1&#xff09;给控制板刷一套空的程序。初始打开arduino IDE或新建&#x…

RabbitMQ事务消息

通过对信道的设置实现 channel.txSelect()&#xff1b;通知服务器开启事务模式&#xff1b;服务端会返回Tx.Select-Ok channel.basicPublish&#xff1b;发送消息&#xff0c;可以是多条&#xff0c;可以是消费消息提交ackchannel.txCommit() &#xff1b;提交事务&#xff1b;…

Devkit开发框架插件工具——Gzip工程创建

Devkit开发框架插件工具——Gzip工程创建 基于鲲鹏亲和开发框架进行原生开发&#xff0c;创建通用计算功能。 二、 操作前提。 1、 在鲲鹏社区申请远程实验室&#xff0c;操作系统选择OpenEuler。 点击链接&#xff1a;鲲鹏社区-官网丨凝心聚力 共创行业新价值&#xff0c;打…

[附源码]Python计算机毕业设计Django的网上点餐系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

蓝牙耳机什么牌子音质最好?高音质蓝牙耳机盘点

如今蓝牙耳机是越来越获得大众的喜爱了&#xff0c;越来越多的年轻人都离不开它了&#xff0c;很多人在买耳机的时候会在意蓝牙耳机的音质&#xff0c;毕竟在自己的耳朵里面听到完美的音乐还是很重要的。下面为大家介绍几款音质超赞的无线蓝牙耳机。 1、南卡小音舱 蓝牙版本&…

关于使用图表控件LightningChart的十大常见问题及解答

LightningChart是芬兰的一款高性能图表开发控件&#xff0c;其中的LightningChart .NET支持实时可视化1万亿个数据点&#xff0c;且可以直接用于.NET WinForms、WPD、传统的Win32 C的应用程序中&#xff1b;而LightningChart JS是一款性能极高的JavaScript图表库&#xff0c;专…

如何设计高可用架构

高可用复杂度模型 计算高可用 任务分配 将任务分配给多个服务器执行 复杂度分析 增加“任务分配器”节点&#xff0c;可以是独立的服务器&#xff0c;也可以是SDK任务分配器需要管理所有的服务器&#xff0c;可以通过配置文件&#xff0c;也可以通过配置服务器&#xff08;例…

2023 年 10 大 Web 开发趋势

公司的在线形象是最重要的。您使用的平台越多&#xff0c;您就会变得越成功&#xff01;拥有在线形象的困难部分是脱颖而出。如果你没有有趣的东西可以提供&#xff0c;你会迷失在人群中。 除了网站具有的基本功能外&#xff0c;您还需要拥有更多功能才能使您的网站具有可持续…

基于BDD的接口自动化框架开箱即用

1、背景说明 项目思想&#xff1a;BDD 行为驱动开发的思想褒贬不一&#xff0c;这里不多说。遵循的宗旨能解决业务痛点的思想就是好思想。 接口测试工具在实际的业务测试场景中往往会遇到一些使用上的局限性&#xff0c;自定义扩展要求技术较高&#xff0c;如果二次开发工具…

平安康养的生意经:养老的壳,金融的核

图片来源Unsplash 文丨螳螂观察 作者丨陈淼 根据第七次人口普查数据&#xff0c;我国60岁及以上老年人口占总人口的比重为18.7%&#xff0c;人口结构即将进入中度老龄化。而伴随着社会老龄化趋势的加剧&#xff0c;背后的养老市场也在迎来巨大的商业化增长。 现阶段&#x…

下班路上捡了一部手机,我用8年开发知识主动找到了失主

☆ 我们学习开发知识&#xff0c;其实并不是只解决当前用户的需求&#xff0c;实现UI原型的还原&#xff0c;不应该只把自己嵌套在当前的浏览器或者某个docker的环境下。 因为不管你在tomcat或者数据库里折腾得再欢&#xff0c;可能到了生活中发现自己失去了超能力。 ☆ 记得有…

校园论坛(Java)——环境配置篇

校园论坛&#xff08;Java&#xff09;——环境配置篇 文章目录校园论坛&#xff08;Java&#xff09;——环境配置篇1、写在前面2、新建Maven项目2.1 引入相关依赖2.2 配置Tomcat环境3、项目发布测试4、项目代码5、参考资料1、写在前面 Windows版本&#xff1a;Windows10JDK版…

Vue中数据代理与事件处理

目录 数据代理 Object.defineProperty 常见属性值 get和set函数 理解数据代理 Vue中的数据代理 Vue中的数据代理小结 事件处理 v-bind 事件处理小结 数据代理 Object.defineProperty 常见属性值 <body> <script type"text/javascript"> let per…