初识自然语言处理NLP

文章目录

  • 1、简介
  • 2、自然语言处理的发展简史
  • 3、语言学理论
    • 句法学(Syntax)
    • 语义学(Semantics)
    • 语用学(Pragmatics)
    • 形态学(Morphology)
  • 4、统计与机器学习方法
    • n-gram 模型
    • 隐马尔可夫模型(HMM)
    • 条件随机场(CRF)
    • 朴素贝叶斯(Naive Bayes)
  • 5、深度学习方法
    • 词嵌入(Word Embeddings)
    • 卷积神经网络(CNN)
    • 循环神经网络(RNN)及其变种
    • Transformer 模型
  • 6、预训练模型与转移学习
    • BERT(Bidirectional Encoder Representations from Transformers)
    • GPT(Generative Pre-trained Transformer)
    • T5(Text-to-Text Transfer Transformer)
  • 7、自然语言处理的应用
    • 文本分类
    • 信息提取
    • 机器翻译
    • 问答系统
    • 文本生成
  • 8、小结

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

1、简介

自然语言处理(Natural Language Processing, 简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域。
自然语言处理(NLP)涉及多个层次的理论和技术,从基础语言学到先进的深度学习模型。

2、自然语言处理的发展简史





3、语言学理论

句法学(Syntax)

  • 上下文无关文法(Context-Free Grammar, CFG):定义如何生成句子的规则,通常用于句法树的构建和分析。
  • 依存语法(Dependency Grammar):研究句子中词语之间的依赖关系,更适合捕捉语言的实际使用情况。
  • X-bar 语法:一种扩展的短语结构语法,用于解释句子的层次结构。

语义学(Semantics)

  • 词汇语义学(Lexical Semantics):研究词语的含义及其组合方式,包括同义词、反义词、多义词等。
  • 组合语义学(Compositional Semantics):通过逻辑和数学方法,研究句子意义如何从单词的意义中组合而成。
  • 框架语义学(Frame Semantics):基于认知语言学,研究语言表达的意义与背景知识的关系。

语用学(Pragmatics)

  • 言语行为理论(Speech Act Theory):研究语言使用者通过语言进行的各种行为,如声明、提问、命令等。
  • 会话含义(Conversational Implicature):研究说话者如何通过语言的间接使用传递隐含意义。
  • 语用推理(Pragmatic Inference):研究听话者如何通过上下文理解隐含信息。

形态学(Morphology)

  • 屈折变化(Inflection):词形变化以表示语法信息,如动词的时态、名词的数。
  • 派生变化(Derivation):通过添加前缀或后缀形成新词,如名词转化为动词。
  • 形态分析与生成:利用规则或统计方法进行词形还原(Lemmatization)和词干提取(Stemming)。

4、统计与机器学习方法

n-gram 模型

  • 平滑技术(Smoothing Techniques):如加法平滑、Katz 回退、Kneser-Ney 平滑,用于处理未见过的 n-gram。
  • 统计语言建模:通过计算 n-gram 的联合概率和条件概率来预测下一个词或词组。

隐马尔可夫模型(HMM)

  • 维特比算法(Viterbi Algorithm):用于找到最可能的隐藏状态序列。
  • 前向-后向算法(Forward-Backward Algorithm):用于计算序列中各状态的概率分布。
  • Baum-Welch 算法:一种 EM(Expectation-Maximization)算法,用于从未标注数据中估计 HMM 的参数。

条件随机场(CRF)

  • 特征函数设计:利用输入数据的特征,如词性、词形等,构建特征函数。
  • 参数估计:通过最大似然估计(Maximum Likelihood Estimation)或正则化方法估计模型参数。
  • 序列标注:通过动态规划算法,如维特比算法,实现最优标注序列的解码。

朴素贝叶斯(Naive Bayes)

  • 贝叶斯定理:通过计算后验概率进行分类。
  • 假设条件独立性:尽管这一假设在实际应用中不总是成立,但朴素贝叶斯在许多实际应用中表现良好。
  • 拉普拉斯平滑:处理零概率问题,防止某些词语未见过的情况下影响分类结果。

5、深度学习方法

词嵌入(Word Embeddings)

  • Word2Vec:通过 Skip-gram 和 CBOW 模型训练词向量,捕捉词语的语义相似性。
  • GloVe(Global Vectors for Word Representation):通过全局词共现矩阵训练词向量,平衡全局和局部信息。
  • FastText:扩展 Word2Vec,通过子词信息提高对低频词和未见词的处理能力。

卷积神经网络(CNN)

  • 一维卷积(1D Convolution):适用于文本数据,利用卷积核捕捉局部词组特征。
  • 池化层(Pooling Layer):如最大池化(Max Pooling)和平均池化(Average Pooling),用于缩减特征图尺寸,提高模型泛化能力。
  • 应用场景:文本分类、情感分析、句子匹配等。

循环神经网络(RNN)及其变种

  • 标准 RNN:处理序列数据,但存在梯度消失和梯度爆炸问题。
  • 长短期记忆网络(LSTM):通过引入记忆单元和门机制,解决长期依赖问题。
  • 门控循环单元(GRU):简化的 LSTM,计算效率更高。
  • 双向 RNN(Bi-directional RNN):结合前向和后向 RNN,提高对上下文信息的捕捉能力。

Transformer 模型

  • 自注意力机制(Self-Attention Mechanism):捕捉序列中任意位置的依赖关系,计算复杂度为 O(n^2)。
  • 多头注意力(Multi-Head Attention):通过并行注意力头,捕捉不同子空间的信息。
  • 位置编码(Positional Encoding):在模型中引入位置信息,弥补 Transformer 缺少序列位置信息的不足。
  • 预训练模型:如 BERT(双向编码器表示)和 GPT(生成预训练变换器),通过大规模语料预训练,在特定任务上微调,显著提高性能。

6、预训练模型与转移学习

BERT(Bidirectional Encoder Representations from Transformers)

  • 双向训练:通过同时考虑左上下文和右上下文,捕捉更丰富的语义信息。
  • 遮掩语言模型(Masked Language Model):在预训练阶段随机遮掩部分词语,模型通过预测这些词语进行训练。
  • 下一句预测(Next Sentence Prediction, NSP):预训练时通过判断两句子是否连续,学习句子间的关系。

GPT(Generative Pre-trained Transformer)

  • 单向训练:通过从左到右生成文本,适合文本生成任务。
  • 解码器架构:与 BERT 的编码器架构不同,GPT 采用解码器架构,更适合生成任务。
  • 零样本、少样本学习:通过大规模预训练,GPT-3 展现出在许多任务中的零样本和少样本学习能力。

T5(Text-to-Text Transfer Transformer)

  • 统一任务格式:将所有 NLP 任务统一为文本到文本的格式,简化了模型的使用和任务转换。
  • 预训练任务:通过多种预训练任务(如遮掩语言模型、拼写纠错等)提高模型的泛化能力。
  • 多任务学习:在预训练阶段同时进行多种任务,提高模型在不同任务上的表现。

7、自然语言处理的应用

文本分类

  • 情感分析:通过分类模型判断文本的情感倾向,如积极、消极、中立。
  • 主题分类:将文本分类到不同的主题,如新闻分类、文档分类等。
  • 垃圾邮件检测:通过分类模型识别垃圾邮件,提高邮箱的安全性。

信息提取

  • 命名实体识别(Named Entity Recognition, NER):识别文本中的实体,如人名、地名、组织名等。
  • 关系抽取(Relation Extraction):从文本中提取实体间的关系,如人物关系、事件关系等。
  • 事件抽取(Event Extraction):识别文本中的事件及其参与者、时间、地点等信息。

机器翻译

  • 统计机器翻译(Statistical Machine Translation, SMT):通过统计模型进行语言翻译,如短语翻译模型、层次短语模型。
  • 神经机器翻译(Neural Machine Translation, NMT):通过端到端的神经网络模型进行翻译,如基于序列到序列(Seq2Seq)模型、Transformer 模型。
  • 自适应翻译(Adaptive Translation):通过实时反馈和用户校正提高翻译质量。

问答系统

  • 检索式问答(Retrieval-Based QA):通过搜索技术在大量文档中检索答案,常用于知识库问答。
  • 生成式问答(Generative QA):通过生成模型生成答案,常用于对话系统、聊天机器人等。

文本生成

  • 语言模型生成(Language Model Generation):通过训练好的语言模型生成连贯的文本,如文章生成、新闻生成等。
  • 对话系统(Dialogue Systems):生成自然、连贯的对话,如智能助手、客服机器人等。
  • 故事生成(Story Generation):生成富有创意和连贯的故事,常用于娱乐、教育等领域。

8、小结

通过结合以上理论知识和技术方法,自然语言处理在处理复杂语言任务方面取得了显著进展,同时仍面临诸如语义理解、上下文处理等挑战
随着深度学习和计算能力的提升,NLP 的应用前景更加广阔。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++20中的模块

大多数C项目使用多个翻译单元(translation units),因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature,用于在翻译单元之间共享声明和定义。它们是某些…

怎么用云手机进行TikTok矩阵运营

TikTok作为炙手可热的社交媒体巨头,已经吸引了亿万用户的目光。随着科技的飞速发展,云手机的出现为TikTok矩阵运营注入了新的活力。本文将深入探讨云手机在TikTok矩阵运营中的实际应用,并分享一系列高效策略与技巧。 (1&#xff0…

DGA上的动态规划

前言:之前都没有写过建模成有向图来动态规划的,但是这个题可以抽象成有向图来做 我们可以用方块的编号和高来确定底下的长和宽 其实这题说白了就是一个记忆化搜索,但是不知道能不能建模出来而已 #define _CRT_SECURE_NO_WARNINGS #include&l…

39.【C语言】指针(重难点)(D)

目录 10.野指针 *定义 *案例 11.野指针规避方法 *初始化 *防止越界 *指针变量不再使用时,及时置NULL,指针使用之前检查有效性 *避免返回局部变量的地址 *assert断言 12.assert断言 *解释 *作用 *优点 *启用assert的开关 往期推荐 承接上篇 38.【C语言】指…

Qt实现类似淘宝商品展示看板功能简版

前一篇文章的简化版本只有浏览功能,前一篇文章链接如下: Qt实现类似淘宝商品看板的界面,带有循环翻页以及点击某页跳转的功能 效果如下: 代码留给有需要的人。 #ifndef ModelDashboardGroup_h__ #define ModelDashboardGroup_…

选择叮咚门铃的材质注意事项

在挑选叮咚门铃时,材质是一个不容忽视的重要因素。合适的材质不仅能确保门铃的耐用性和美观度,还能影响其性能和使用体验。 塑料材质的叮咚门铃是较为常见且经济实惠的选择。它轻巧且易于成型,可以被设计成各种独特的形状和颜色,为…

Java开发笔记--通用基础数据校验的设计

最近在开发一个功能,对排水管网的基础数据(包括管井、管道、泵站,雨水口,雨水口线,泵站,污水处理厂,排口等)的导入进行校验。 以字段为纬度,考虑二个方面的校验:数据库唯一&#xf…

【Windows】如何用防火墙禁用某个软件联网

我们使用一些激活软件时,经常需要防止软件联网造成激活失效,以下说明如何通过防火墙配置屏蔽掉软件联网。 以下说明手动添加防火墙拦截的方法: 使用【WinR】快捷键打开运行窗口然后输入【wf.msc】 点击确定。 点击左侧的出站规则然后点击右…

el-table自动滚动到最底部

我的需求是这样的,因为我的表格是动态的,可以手动新增行,固定表头,而且需要一屏显示,为了方便用户就需要再新增的时候表格自动向上滚动。 差了官方文档后发现有一个属性可以支持 这个属性正是自己需要的,所…

Python面试宝典第30题:找出第K大元素

题目 给定一个整数数组nums&#xff0c;请找出数组中第K大的数&#xff0c;保证答案存在。其中&#xff0c;1 < K < nums数组长度。 示例 1&#xff1a; 输入&#xff1a;nums [3, 2, 1, 5, 6, 4], K 2 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;nums …

Rest风格快速开发

Rest风格开发简介 简单点来说&#xff0c;Rest风格的开发就是让别人不知道你在做什么&#xff0c;以deleteUserById和selectUserById为例&#xff1a; 普通开发&#xff1a;路径 /users/deleteById?Id666 /users/selectById?Id666 别人很容易知道你这是在干什么 Rest风…

JavaScript骚操作媒体查询攻略

背景 一讲到媒体查询&#xff0c;大家首先想到的可能都是都是CSS中media,这也没错&#xff0c;这确实是最常见的媒体查询方式&#xff0c;但是我们今天要讲的不是它&#xff0c;而是大家很少接触到的window.matchMedia()和window.resize 最近在做项目的时候拿到一个需求&…

【Qt】多种控件实现“hello world“

使用编辑框的方式实现"hello wordl" 使用编辑框实现"hello world"的方式有俩种&#xff1a; 单行编辑框&#xff1a;LineEdit多行编辑框&#xff1a;TextEdit 图形化界面 纯代码方式 代码展示&#xff1a; #include "widget.h" #include &qu…

Python实战:基础语法

一、求解列表中的最大元素 import random#定义函数 def get_max(lst):x lst[0] #x存储的是元素的最大值#遍历操作for i in range(1,len(lst)):if lst[i] > x:x lst[i] #对最大值进行重新赋值return x#调用函数 lst [random.randint(1,100) for item in range(10)] print…

YARN 调度器的配置与使用

YARN 调度器的配置与使用 一、启动公平调度器1.1 配置 yarn-site.xml创建 fail-scheduler.xml 文件 二、同步配置文件三、重启启动 YARN 集群四、提交作业五、运行结果 一、启动公平调度器 公平调度器的使用由属性yarn.resourcemanager.scheduler.class的设置所决定。YARN默认…

mybatis-plus雪花算法

苞米豆mybatis-plus已实现雪花算法&#xff0c;若项目中使用雪花算法生成自增主键&#xff0c;可直接引用相关jar实现其工具类&#xff0c;若不想再单独引用jar也可将其Sequence类直接复制到自己项目中定义为工具类使用 官方文档&#xff1a;https://baomidou.com/ Git地址&am…

C++ | Leetcode C++题解之第330题按要求补齐数组

题目&#xff1a; 题解&#xff1a; class Solution { public:int minPatches(vector<int>& nums, int n) {int patches 0;long long x 1;int length nums.size(), index 0;while (x < n) {if (index < length && nums[index] < x) {x nums[i…

基于python的百度迁徙迁入、迁出数据分析(七)

参考&#xff1a;【Python】基于Python的百度迁徙2——迁徙规模指数&#xff08;附代码&#xff09;-CSDN博客 记录于2024年8月&#xff0c;这篇是获取百度迁徙指数&#xff0c;之前我们都在讨论不同城市的迁徙比例关系&#xff0c;这篇我们来获取百度迁徙指数这个数据&#x…

职场要懂“3不急”,否则走不远

在职场中&#xff0c;我们经常会遇到各种各样的人和事&#xff0c;有的同事能够得到领导的重视和喜爱&#xff0c;有的则始终处于“不温不火”的状态&#xff0c;这其中到底是什么原因导致的呢&#xff1f; 其实&#xff0c;很大一部分原因是因为在工作中犯了一些“急于表现”…

Vue - progressive-image 渐进式图片加载(Vue2)

Vue - progressive-image 渐进式图片加载&#xff08;Vue2&#xff09; 在追求高分辨率图片的网页中&#xff0c;其图片加载速度影响着用户的体验&#xff0c;特别在低网速加载慢的情况下&#xff0c;简单的图片加载图标无法满足用户需求&#xff0c;progressive-image实现了渐…