当前位置: 代码网 > it编程>软件设计>交互 > 【人工智能】NLP入门指南:自然语言处理基础全解析

【人工智能】NLP入门指南:自然语言处理基础全解析

2024年08月05日 交互 我要评论
在数字化时代,自然语言处理(NLP)已成为人机交互的桥梁。本文将引导读者从基础到应用,全面了解NLP技术。首先,我们将探索NLP的两大支柱:自然语言理解(NLU)和自然语言生成(NLG),理解它们如何分别让机器理解与生成人类语言。接着,文章将深入中文文本的分词技术,特别是jieba分词的使用。进一步,我们将学习文本的数值表示方法,包括one-hot编码、Word2Vec和Embedding模型,这些技术赋予机器学习模型处理语言的能力。

在这里插入图片描述



前言

    在数字化时代,自然语言处理(nlp)已成为人机交互的桥梁。本文将引导读者从基础到应用,全面了解nlp技术。首先,我们将探索nlp的两大支柱:自然语言理解(nlu)和自然语言生成(nlg),理解它们如何分别让机器理解与生成人类语言。接着,文章将深入中文文本的分词技术,特别是jieba分词的使用。进一步,我们将学习文本的数值表示方法,包括one-hot编码、word2vec和embedding模型,这些技术赋予机器学习模型处理语言的能力。最后,通过tensorflow playground,我们将直观体验神经网络在nlp中的应用。

在这里插入图片描述


一、nlp

nlp(自然语言处理)

    nlp(natural language processing)自然语言处理的缩写,是人工智能和语言学领域的交叉学科,旨在让计算机能够理解和处理人类语言。nlp 的目标包括让计算机能够读取、解析、理解和生成人类语言文本,从而进行各种与语言相关的任务,如文本分类、情感分析、机器翻译、问答系统、聊天机器人等。

    为了实现这些任务,nlp 研究者通常会使用各种算法和模型,如基于规则的方法、基于统计的方法、基于深度学习的方法等。近年来,随着深度学习技术的快速发展,基于神经网络的 nlp 模型,如循环神经网络(rnn)、长短期记忆网络(lstm)、transformer 等,在 nlp 任务中取得了显著的性能提升。

    自然语言处理(nlp natural language processing) 是一种专业分析人类语言的人工智能。就是在机器语⾔和⼈类语言之间沟通的桥梁,以实现人机交流的目的。

  • 2个核心任务:
    • 自然语言理解 nlu (natural language understanding)
    • 自然语言生成 - nlg (natural language generation)

nlu(自然语言理解)

    自然语言理解(natural language understanding, nlu) 旨在使计算机能够理解和处理人类语言。它通过人工智能技术,从语音或文本输入中获取信息,并对其进行解析以提取有意义的内容。
    通俗来说,nlu就是机器需要理解人的意思。举个栗子🌰,试着理解下面两句话(再试试看从机器的角度理解呢):

  • 冬天到了,衣服能穿多少穿多少
  • 夏天到了,衣服能穿多少穿多少

nlg(自然语言生成)

    自然语言生成(natural language generation, nlg) 是将结构化数据转换为人类可以理解的自然语言的过程nlg系统分析数据集,创建有意义的叙述,从而生成自然语言输出。



二、分词

1.什么是分词

    分词就是将句子、段落或文章这样的长文本分解为以字或词为单位的数据结构,以便进行后续处理和分析。
    需要注意的是中文分词和英文分词会有所不同。英文文本中有空格作为自然分隔符,而中文则需要通过特定方法进行分词。并且,英文单词有丰富的变形,需要进行词形还原和词干提取。中文分词面临一些难点,例如没有统一标准、歧义词切分和新词识别等问题。

2.常见的分词工具

3.jieba分词

     jieba 是python编写的一个中文分词库,提供了多种分词模式和关键词抽取等功能。

  • 安装:pip install jieba
  • 使用:
    • 1.导入jieba库:import jieba
    • 2.使用jieba进行分词

jieba提供了多种分词模式和方法,以下是几种常用的用法:

  • 精确模式:将句子最精确地切开,适合文本分析。
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=false)
print("default mode: " + "/ ".join(seg_list))
# default mode: 我/ 来到/ 北京/ 清华大学
  • 全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=true)
print("full mode: " + "/ ".join(seg_list))
# full mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
  • 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
import jieba
seg_list = jieba.cut_for_search("我来到北京清华大学")
print("search mode: " + "/ ".join(seg_list))
# search mode: 我/ 来到/ 北京/ 清华/ 华大/ 大学/ 清华大学
  • 添加自定义词典:jieba支持用户自定义词典,可以在分词时包含jieba词库中没有的词。
import jieba
jieba.load_userdict("userdict.txt")  # 加载自定义词典
seg_list = jieba.cut("他来到了网易杭研大厦")
print("/ ".join(seg_list))
# 输出(不加 userdict.txt): 他/ 来到/ 了/ 网易/ 杭研/ 大厦
# 输出(加 userdict.txt):他/ 来到/ 了/ 网易/ 杭研大厦

其中,userdict.txt 内容为:

网易
杭研大厦

    注意:userdict.txt是自定义词典文件,每一行包含一个词,支持多行。词典的编码格式必须为utf-8,否则会出现乱码。


三、词向量

1.什么是词向量

    词向量(word embedding)自然语言处理(nlp) 中用来表示词汇的一种高维向量。这种向量通常是通过训练神经网络模型从大量文本数据中学习得到的,能够捕捉词汇之间的语义和语法关系。

传统的词表示方法是基于独热编码(one-hot encoding),即为每个词在词汇表中分配一个唯一的索引,然后创建一个与词汇表大小相同的向量,其中只有该词的索引位置为1,其余位置为0。然而,这种方法存在几个问题:

  1. 维度灾难:随着词汇表的增大,向量的维度也会急剧增加,导致计算效率低下。
  2. 语义缺失:独热编码无法表示词汇之间的语义关系,例如“猫”和“狗”在语义上是相近的,但它们的独热编码表示却是完全独立的。

为了克服这些问题,研究者们提出了词向量的概念。词向量是一种低维、稠密的向量表示,通常维度在几十到几百之间。每个词都被映射到一个这样的向量上,并且向量之间的相似性可以反映词汇之间的语义关系。

词向量的训练通常基于无监督学习的方法,例如word2vec(包括skip-gram和cbow两种模型)、glove、fasttext等。这些模型通过最大化文本序列中词汇的共现概率来学习词向量,使得在语义上相近的词汇在向量空间中的距离也更近。

词向量在nlp任务中有着广泛的应用,例如文本分类、情感分析、命名实体识别、机器翻译等。通过将文本中的词汇表示为词向量,可以将nlp任务转化为机器学习问题,并利用各种机器学习算法进行建模和预测。此外,词向量还可以作为特征输入到深度学习模型中,以进一步提高模型的性能。

2.文本张量表示方法

    文本张量表示是一种将文本数据转换为数值形式的方法,以便计算机可以对其进行处理和分析。在自然语言处理(nlp)中,文本张量通常用于表示词向量、字符向量或句子向量等。

["⼈⽣", "该", "如何", "起头"]
==>
# 每个词对应矩阵中的⼀个向量
[[1.32, 4,32, 0,32, 5.2],
 [3.1, 5.43, 0.34, 3.2],
 [3.21, 5.32, 2, 4.32],
 [2.54, 7.32, 5.12, 9.54]]

3.常见的词向量模型

3.1 ont-hot 编码

    无论是人类还是计算机都很难直接将语言字符进行计算。我们期望着把语言字符转换为一种便于计算的形式,也就是把对应的词汇用数值类型的数据进行唯一表示。最简单的一种将语言字符转换为便于计算的一种方式就是 one-hot编码

color	==> 			color_red  color_green  color_blue  
-----    				---------  -----------  ----------  
red   	==>					1          0           0  
green   ==>					0          1           0  
blue   	==>					0          0           1  
red   	==>					1          0           0

在这个例子中,我们为每一个颜色创建了一个新的列,并且在原始数据中的颜色对应的列上标记为 1,其余列标记为 0。

3.2 word2vec

    word2vec 也叫 word embeddings,中文名“词向量”。作用就是将自然语言中的字词转为计算机可以理解的稠密向量(dense vector)。在word2vec出现之前,自然语言处理经常把字词转为离散的单独的符号,也就是one-hot encoder
    word2vec 是由谷歌于2013年正式提出的,但是对词向量的研究可以追溯到2003年论文《a neural probabilistic language model》。但正是谷歌对word2vec的成功应用,让词向量的技术得以在业界迅速推广,使embedding这一研究话题成为热点。毫不夸张地说,word2vec对人工智能时代embedding方向的研究具有奠基性的意义。
    word2vec 是一种在自然语言处理中广泛使用的词嵌入技术,它通过训练神经网络模型将文本中的每个单词映射为一个高维向量,从而捕捉单词之间的语义关系。以下是一个word2vec的案例,用于说明其工作原理和应用。

3.3 embedding

    在机器学习和自然语言处理(nlp)中,embedding(嵌入) 是一种将一个高维空间中的对象(如单词、短语、句子、图像等)映射到一个低维、稠密、连续的向量空间中的表示方法。这种表示方法通常能够保留原始对象之间的某些关系或属性,使得在向量空间中相似的对象具有相近的表示。

    在自然语言处理中,word embedding(词嵌入) 是最常见的嵌入类型,它将词汇表中的每个单词映射到一个固定大小的向量。这些向量通常是通过训练神经网络模型(如word2vecglovefasttext等) 在大量文本数据上学习得到的。

四、tensorflow playground

    tensorflow playground 是一个在线实验环境,用于学习和试验机器学习模型的训练过程。它提供了一个直观的图形界面,允许用户通过拖放节点来构建神经网络,并实时观察模型训练过程中的各项指标变化。旨在帮助初学者理解深度学习模型的基本概念,如层结构、激活函数、损失函数以及梯度下降等


在这里插入图片描述

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com