首页 > 其他分享 >NLP基础

NLP基础

时间:2024-09-23 20:24:22浏览次数:10  
标签:NLP 模型 基础 TF 文档 Embedding IDF 文本

一、基本概念

自然语言处理(NLP)是计算机科学、人工智能和语言学的交叉领域,旨在使计算机能够理解、解释和生成自然语言。以下是一些NLP的基础概念:

  • 文本预处理

    • 分词:将文本分解为单词或短语。

    • 去除停用词:去掉常见的、无实际意义的词(如“是”、“的”)。

    • 词形还原/词干提取:将词语还原为基本形式(如“running”还原为“run”)。

  • 词表与语料库

    • 词表/词库:一个包含文本中所有独特词汇的列表,用于构建特征表示。

    • 语料库:一个包含大量文本数据的集合,通常用于训练和评估模型。

  • 特征提取

    • 词袋模型:一种简化的表示方法,将文本表示为词的出现频率,忽略词序。

    • N-gram:通过考虑连续的N个词(如二元组、三元组等)来捕捉词序信息。

    • TF-IDF:一种统计方法,用于评估一个词对文档的重要性。

    • 词嵌入:使用模型(如Word2Vec、GloVe)将词转换为向量表示,捕捉词之间的语义关系。

  • 模型

    • 监督学习:使用标注数据训练模型,如情感分析、文本分类。

    • 无监督学习:从未标注数据中发现模式,如主题建模(LDA)。

    • 深度学习模型:如RNN、LSTM、Transformer等,能够处理序列数据。

  • 应用

    • 机器翻译:自动将一种语言翻译为另一种语言。

    • 对话系统:如聊天机器人,通过自然语言与用户互动。

    • 文本生成:生成新的文本内容,如写作助手。

  • 评估指标

    • 准确率召回率F1-score等,用于评估模型性能。

二、NLP的基本流程

中文NLP的基本流程与英文相比,在文本预处理环节表现出特殊性,主要分为语料获取、语料预处理、文本向量化、模型构建、模型训练和模型评价六部分。

(1)语料获取 获取文本语料的方法包括:利用现成的数据集或第三方语料库、通过爬虫技术获取网络数据,或与第三方合作获取数据。

(2)语料预处理 预处理步骤包括:去除非文本内容(如HTML代码、CSS标签等),使用工具如正则表达式和Beautiful Soup;进行中文分词,常用工具有jieba等;词性标注,为词语打上词类标签;去停用词,移除句子中不必要的虚词和代词。

(3)文本向量化(特征工程) 经过预处理的文本需转化为特征向量,常用方法有词袋模型、独热表示、TF-IDF、n-gram模型和Word2Vec等。

(4)模型构建 根据需求选择合适的模型进行构建,备选模型也需准备。模型包括机器学习模型(如SVM、Naive Bayes)和深度学习模型(如TextCNN、RNN、transformer等),复杂模型通常需更长训练时间,但不一定能显著提高精度。

(5)模型训练 训练过程中需注意过拟合和欠拟合问题,避免梯度消失或爆炸。模型调优是一个复杂且冗长的过程,需权衡精度与泛用性,并应对数据分布变化进行重新训练。

(6)模型评价 模型训练完成后,需用准确率、精确率、召回率、F1值、ROC曲线等指标对其效果进行评价。不同业务场景对模型性能的要求可能有所不同,需针对性选择评价方法。

三、NLP中的特征工程

特征是数据中抽取出来的对结果预测有用的信息。

在自然语言处理(NLP)中,特征工程是指将文本数据转换为适合机器学习模型使用的数值表示的过程。文本是一种非结构化数据,机器学习模型无法直接处理,因此必须通过特征工程来提取有用的信息。

通过特征工程能让机器学习到文本数据中的一些特征,比如词性、语法、相似度等

1.词向量的引入

词向量(Word Vector)或称词嵌入,是将单词映射为稠密的实数向量,以捕捉其语义关系。这种映射使得机器可以通过计算向量间的相似性来理解单词之间的关系。例如,类比运算可以让模型推断出“国王”与“男人”相关,而通过这种方式,可以提升文本分类、命名实体识别等NLP任务的性能。

2. 传统NLP中的特征工程

2.1 独热编码 one - hot

独热编码(One-Hot Encoding)是一种将分类变量转换为二进制向量的方式。在这个编码中,每个类别用一个向量表示,该向量的长度等于类别总数,只有一个元素为1,其余均为0。例如,对于三个类别“猫”、“狗”和“鸟”,可以编码为“猫”→[1, 0, 0],“狗”→[0, 1, 0],“鸟”→[0, 0, 1]。这种方法简单易用,但在处理高维数据时可能会导致稀疏性问题。

2.2 词频-逆文档频率(TF-IDF)

词频-逆文档频率(Term Frequency-Inverse Document Frequency, TF-IDF)是一种在信息检索和文本挖掘中常用的统计方法,用来评估一个词在一个文档或者语料库中的重要程度。TF-IDF是两个独立度量的乘积:词频(TF)和逆文档频率(IDF)。

  1. 词频(Term Frequency, TF): 词频指的是一个词在文档中出现的次数。通常情况下,如果一个词在一个文档中出现得越多,那么它对文档的重要性也就越大。然而,并不是所有频繁出现的词都是有实际意义的,比如“的”、“是”等常见词汇,因此需要结合其他因素一起考虑。

  2. 逆文档频率(Inverse Document Frequency, IDF): 逆文档频率是对词频的一个补充,用来衡量一个词的普遍重要性。其计算公式为:IDF = log(文档总数 / (包含该词的文档数 + 1))。逆文档频率越高,说明该词越具有区分度,即该词在文档中的出现并不是那么常见,可能更能够反映文档的主题。

TF-IDF值高的词,意味着这个词不仅在当前文档中出现频繁,而且在整个语料库中并不常见,这样的词对于识别文档的主题来说更有价值。

计算方式: TF-IDF的计算公式为:TF-IDF = TF * IDF

例如,对于某个词w,在文档d中的TF-IDF值可以表示为: TF-IDF(w, d) = TF(w, d) * IDF(w)

其中,

  • TF(w, d) 是词w在文档d中的词频;

  • IDF(w) 是词w的逆文档频率。

2.3 n-grams

n-grams 是一种在自然语言处理(NLP)领域广泛使用的模型,用于预测给定序列中的下一个元素。n-gram 模型基于 n 个连续的项目(如单词、字符或音素)来构建语言模型。这里的“n”是指连续项目的数量。

类型

n-grams 可以分为几种类型,主要根据它们所包含的项目数量来定义:

  1. Unigrams(一元语法)

    • 这是最简单的情况,只考虑单个词语或字符。例如,“我”,“喜欢”,“编程”。

  2. Bigrams(二元语法)

    • 考虑连续的两个词语或字符。例如,“我喜欢”,“喜欢编程”。

  3. Trigrams(三元语法)

    • 考虑连续的三个词语或字符。例如,“我喜欢编程”。

  4. Four-grams 或 Tetra-grams(四元语法)

    • 考虑连续的四个词语或字符。例如,“我喜欢编程技术”。

  5. 更高阶的 n-grams

    • 可以扩展到任意长度,但随着 n 的增加,数据稀疏性问题会变得更加显著。

应用

n-grams 在多个领域都有应用,包括但不限于:

  • 语言建模:预测给定前缀下的下一个单词。

  • 机器翻译:利用源语言和目标语言之间的 n-gram 分布来翻译文本。

  • 拼写检查:通过比较输入文本与已知正确文本的 n-gram 来检测拼写错误。

  • 文本分类:使用特征向量中的 n-grams 来训练分类器。

  • 自动补全:预测用户可能要输入的下一个词。

数据稀疏性

随着 n 的增加,n-gram 模型可能会遇到数据稀疏性问题,因为较长的序列在训练数据中出现的可能性较低。为了处理这个问题,可以采用平滑技术,如拉普拉斯平滑(Laplace smoothing),或者使用退化(back-off)策略,当高阶 n-grams 没有足够的统计数据支持时退回到低阶 n-grams。

n-grams 提供了一种简单而有效的方法来处理语言数据,并且由于其灵活性,仍然在许多现代 NLP 系统中占有一席之地。

3.深度学习中NLP的特征输入

深度学习使用分布式单词表示技术(也称词嵌入表示),通过查看所使用的单词的周围单词(即上下文)来学习单词表示。这种表示方式将词表示为一个粘稠的序列,在保留词上下文信息同时,避免维度过大导致的计算困难。

3.1 稠密编码(特征嵌入)

稠密编码在机器学习和深度学习中,通常指的是将离散或高维稀疏数据转化为低维的连续、密集向量表示。这种编码方式在特征嵌入(Feature Embedding)中尤为常见。

特征嵌入(Feature Embedding)

特征嵌入,也称为词嵌入,是稠密编码的一种表现形式,目的是将离散的类别、对象或其他类型的特征映射到一个连续的向量空间。通过这种方式,嵌入后的向量可以捕捉不同特征之间的语义关系,并便于在后续的机器学习模型中使用。

特点:

  • 低维度:相比稀疏表示(如独热编码),稠密编码的维度更低,能够减少计算和存储成本。

  • 语义相似性:嵌入向量之间的距离(如欧氏距离或余弦相似度)可以表示这些对象之间的语义相似性。

  • 可微学习:嵌入表示通常通过神经网络进行学习,并通过反向传播算法进行优化。

3.2 词嵌入算法
3.2.1 Embedding Layer

Embedding Layer 的作用

Embedding Layer 是一个可训练的层,它将每个单词(通常是通过 one-hot 编码表示的索引)映射到一个多维向量空间中的点。这个层的输出是一个密集的向量,通常具有较小的维度,相比于原始的 one-hot 编码表示,这个向量可以更好地捕捉到单词之间的关系。

如何使用 Embedding Layer

在使用 Embedding Layer 时,通常需要完成以下几个步骤:

  1. 文本预处理

    • 清洗文本,移除特殊字符和停用词。

    • 将文本分割成单词或标记。

    • 创建一个词汇表(vocabulary),并为每个单词分配一个唯一的索引。

  2. 创建 Embedding Layer

    • 在 Keras 中,可以使用

      Embedding

      层来创建一个词嵌入层。你需要指定几个参数:

      • input_dim:词汇表的大小,即最大索引加 1。

      • output_dim:每个嵌入向量的维度。

      • input_length:输入序列的最大长度(可选)。

  1. 构建模型

    • 将 Embedding Layer 添加到模型中,并连接后续的层,如 LSTM、GRU 或 Dense 层。

  2. 训练模型

    • 训练模型时,Embedding Layer 的权重将根据损失函数被优化调整。

  3. 使用预训练的词嵌入

    • 如果已经有预训练的词嵌入(如 Word2Vec 或 GloVe),可以加载这些权重到 Embedding Layer 中,并选择是否继续训练这些权重。

注意事项

  • 词汇表大小:词汇表的大小决定了 Embedding Layer 的输入维度。

  • 预训练权重:如果使用预训练的词嵌入,确保词汇表中的索引与预训练权重的索引相对应。

  • 序列填充:确保所有的输入序列都具有相同的长度,可以通过填充(padding)来实现这一点。

Embedding Layer 是深度学习中处理文本数据的重要工具,它使得模型能够从原始文本中学习到有意义的特征。

标签:NLP,模型,基础,TF,文档,Embedding,IDF,文本
From: https://blog.csdn.net/2401_83649983/article/details/142467746

相关文章

  • Java基础练习(每日五题)
    1,通过代码编写,输一段话:“今天是学习的第一天”packagejava4;publicclasspractise{publicstaticvoidmain(String[]args){System.out.println("今天是学习的第一天");}}2,拼接打印:“XXX:我已经学习了JavaX年,我期望的工资是XXX”packagejava4;......
  • 零基础小白如何入门CTF,看这一篇就够了(附学习笔记、靶场、工具包)_ctf入门
    CTF简介:CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2......
  • 第四章 CSS样式基础
    4.1CSS概述CSS(CascadingStyleSheets,层叠样式表)是一种用于描述网页内容显示方式的样式语言。它与HTML一起使用,通过分离内容与样式,提供更高效的网页设计和维护。CSS的主要作用是控制网页的布局、颜色、字体、间距等视觉表现。 1.CSS的基本概念1.选择器(Selector):用于指定H......
  • 【前端学习】HTML基础学习
    超级简洁的html基础教程来啦!一、HTML简介 1、什么是HTML??HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形......
  • JAVA基础之八-方法变量作用域和编译器
    本文主要讨论方法中变量作用域。不涉及类属性变量、静态变量、线程变量共享等。虽然知道某类变量的作用域非常重要,但是没有太多需要说的,因为许多东西是显而易见,不言自明。 在大部分情况下,或者在老一点版本中,java语法看起来都比较正常,或者说相对古典。但是随着JAVA版本的迭代,......
  • MySQL零基础入门教程-3 条件查询、模糊查询、条件关键字和其优先级关系,基础+实战
    教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我听课收集整理的课程的完整笔记,供大家学习交流下载:夸克网盘分享本文内容为完整笔记的第三篇 14、条件查询&模糊查询P19-2514.1什么是条件查询?不是将表中所有数据都查出来。是查询出来符合条件的条件查询需要用到whe......
  • python基础
    目录basic 标识符、变量、数据类型 标识符关键字字面量literal变量数据类型字符串str列表list元组tuple集合set字典dict 变量的输入与输出数字类型整型int浮点型float复数类型complex 布尔类型bool数字类型的转换:basic *良好的代码格式可提升代码......
  • 跟着黑马学MySQL基础篇笔记(4)-多表查询
    37.多表查询-多表关系介绍多表关系概述项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:一对多(多对一)多对多一对一一对多(多对一)案例:部门与员工的关系......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
        一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行......
  • 《测度论与概率论基础》笔记 1.3.2
    《测度论与概率论基础》笔记1.3.21.3\(\sigma\)域的生成定理1.3.2  本文是程士宏老师的《测度论与概率论基础》这本书的读书笔记。这本书算是国内为数不多的较为不错的测度论教材之一,但是很多地方讲述不详细,这里进行补充。定理1.3.2:如果\(\mathscr{Q}\)是半环,其生成的......