自然语言处理
发表于:2024-06-22 |
字数统计: 3k | 阅读时长: 10分钟 | 阅读量:

自然语言处理(25-A6309-16:00)

第一章、绪论

自然语言处理是利用计算机对自然语言的形、音、义等信息进行处理,即对字、词、句、篇章的输入、输出、识别、分析、理解、生成等进行操作和加工的过程。

NLP机制涉及的两个流程:自然语言理解、自然语言生成。

NLP的发展历程:萌芽期、发展期、繁荣期。

NLP研究内容包括机器翻译、信息检索、文本分类、智能问答、信息过滤、自动文摘、信息抽取、舆情分析、语音识别、自动校对。

NLP应用包括百度翻译、图灵机器人、微信语言转文字、新闻自动分类。

NLP流程:

  1. 语料获取

  2. 语料预处理

    1. 去除数据中非文本内容

    2. 中文分词(如jieba)

    3. 词性标注

    4. 去停用词

  3. 文本向量化(常用模型有:词袋模型—-最简单的模型、独热表示、TF-IDF表示、n-gram模型、Word2Vec)

  4. 模型构建(机器学习:KNN、SVM、K-means 深度学习:RNN、CNN、Seq2Seq)

  5. 模型训练

  6. 模型评价

第二章、语料库

语料库以结构划分可分为平衡结构语料库自然随机结构语料库

构建语料库应考虑:代表性、结构性、平衡性、规模性

  • concordance:显示某个词在文本中的所有出现位置及其上下文。

  • common_contexts:显示两个或多个词共同出现的上下文。

  • sorted:用于对列表进行排序,不是专门用于NLP的函数。

  • collocations:用于搜索搭配词语的函数

  • categories:返回语料库中分类标签的列表

  • raw:返回语料库中原始的未处理文本。

  • open(fileid):打开指定ID的文件,但不用于获取文件ID列表。

  • fileids:用于获取语料库中的文件

  • read:读取作品集文本

  • count:查询词频

  • FreqDist:查询文本中词汇频数分布

  • dispersion_plot:绘制指定词分布情况离散图

第三章、正则表达式

函数

import re

匹配文本

  • match:需要字符串开头匹配,格式为re.match(pattern,string,flags)。

  • search: 不需要字符串开头匹配,格式为re.search(pattern,string,flags)。

  • findall:会返回所有匹配结果的列表,search只返回第一个,格式为re.findall(pattern,string,flags)。

替换

  • sub:将所有匹配到的字符串替换为指定字符串,格式为re.sub(pattern,repl,string)。

元字符

符号 说明
. 匹配除”\n”外任意字符
[ ] 匹配括号内任意字符
| 匹配A或B
^ 匹配^开头的内容
$ 匹配$结尾内容
? 前面的元素可选,并且最多匹配1次
* 前面的元素会被匹配0次或多次
+ 前面的元素会被匹配1次或多次
{n} 前面的元素会被匹配n次
{n,} 前面的元素至少会被匹配n次
{n,m} 前面的元素至少匹配n次,至多匹配m次
预定义字符 说明
\w 字、字母、数字
\W 非(字、字母、数字)
\s 空白字符
\S 非空白字符
\d 数字
\D 非数字
\b 单词的边界
\B 非单词的边界

使用转义字符“\”可以将特殊字符转义为普通字符。

第四章、中文分词技术

基于规则分词

正向最大匹配法(切分文本后删除最后一个字符再与词典匹配,失败则重复操作)

逆向最大匹配法(与正向最大匹配法原理相反)

双向最大匹配法(将正向最大匹配法与逆向最大匹配法的结果对比,选取切分次数较少的结果)

基于统计分词

基于规则的中文分词会遇到歧义问题(包括交集型切分歧义和组合型切分歧义)和未登录词问题(包括普通新词汇和专有名词)。

n-gram模型(见p52)

数据平滑

数据平滑可以应对数据稀疏即出现式子中分子或分母为零的情况。

  1. 加1平滑(规定任何词语在语料库中都至少出现一次,即使没有出现过)

  2. 古德-图灵估计法(将所有看得见的事件概率适当调小分配给没有看见的事件)

  3. 线性插值平滑(适合高价的n-gram模型,利用低价的n-gram模型对高价的n-gram进行线性插值,如没有“你好你”用“你好”替代)

维特比算法(见p60)

第五章、词性标注与命名实体识别

词性标注规范

现代汉语中的词性可分为实词和虚词,共12种。

jieba词性标注流程:

  1. 加载离线统计词典

  2. 构建前缀词典

  3. 构建有向无环图

  4. 计算最大概率路径

命名实体识别

中文实体识别面临的挑战:

  1. 中文词灵活多变

  2. 中文词的嵌套情况复杂

  3. 中文词存在简化表达现象

CRF模型

CRF是基于统计方法的模型,主要来源于最大熵模型,可以被认为是一个无向图或一个马尔科夫随机场。

中文命名实体识别

在多分类问题中,最经典的模型是多项逻辑斯谛回归,也称为 Softmax 回归

特征函数(可以用于指示某个特定特征是否在当前样本中出现)输入值中,0表示特征不存在或条件不满足,1表示特征存在或条件满足。

第六章、关键词提取

关键词提取算法

关键词提取算法的性质:

  1. 可读性

  2. 高速性

  3. 学习性

  4. 健壮性

常见的关键词提取算法有TF-IDF算法、TextRank算法和主题模型算法(LSA和LDA算法)

TF-IDF算法

TF-IDF算法(词频-逆文档频率算法)主要思想是字词的重要性随着它在文档中出现次数的增加而上升,并随着它在语料库中出现频率的升高而下降。它 对文本内容的利用程度较低。

词频(TF)是一个词在一篇文档中出现频次的统计量。

逆文档(IDF)是一个词出现在文档集中文档的频次的统计量。一个词在文档集中越少的文档中出现,说明这个词对文档的区分能力越强。

TextRank算法

TextRank算法是一种基于图的文本排序算法,它可以用于自动摘要和提取关键词。与TF-IDF算法相比不依靠现有文档集提取关键词,只利用局部词汇之间的关系对后续关键词排序,随后从文本中提取词或句子,从而实现提取关键词和自动摘要。TextRank算法的基本思想来自PageRank算法。

LSA和LDA算法

TF-IDF算法和TextRank算法无法在某些场合提取文本中的语义信息。

主题模型算法是在大量文档中发现潜在主题的一种统计模型,它能够识别文章中的隐藏主题,并揭示这些主题中包含的关键词。

LSA算法核心思想是将所拥有的词语-文档矩阵分解成相互独立的词语-主题矩阵和主题-文档矩阵。

LDA算法包含词语、主题和文档3层结构,它假定词语之间没有顺序,所有的词语都无序地放在一个袋子里,并且认为一个文档可以有多个主题对应不同的词语。

第七章、文本向量化(主要有离散表示和分布式表示)

文本离散表示

离散表示是一种基于规则和统计的向量化方法,常用的有词集模型和词袋(BOW)模型。特点是忽略文本信息中的语序信息和语境信息仅将其反映为若干维度的独立概念。词集模型采用独热表示,只要单词在字典中就置为1不管出现多少次;BOW模型只要文本中的词出现在字典就加1次出现多少加多少。

独热表示用一个长的向量表示一个词,向量长度为字典的大小,每个向量只有一个维度的值为1,其余维度的数值全部为0,为1的维度表示该词语在字典中的位置。

独热表示词向量的缺点:

  1. 维数过高

  2. 矩阵稀疏

  3. 不能保留语义

BOW模型用一个向量表示一句话或一个文档。

BOW模型的缺点:

  1. 不能保留语义

  2. 维数高和稀疏性

TF-IDF表示是用一个向量表示一句话或一个文档,它是在BOW模型基础上对词出现的频次赋予TF-IDF权值,对BOW模型进行修正,进而表示该词在文档集合中的重要程度。

文本分布式表示

文本分布式表示是将每个词根据上下文从高维空间映射到一个低维度、稠密的向量上。常用模型有LSA矩阵分解模型、PLSA潜在语义分析概率模型、LDA文档生成模型和Word2Vec模型。

Word2Vec模型是简单化的神经网络模型。可以在巨量的字典和数据集中高效训练,其训练结果可以很好度量词与词之间的相似性。它的特点是当模型训练好后,并不会使用训练好的模型处理新的任务,真正需要的是模型通过训练数据所得的参数,如隐藏层的权重矩阵。

Word2Vec模型可以分为连词袋(CBOW)模型和跳字(Skip-Gram)模型。

Doc2Vec模型在Word2Vec模型输入层增添了一个与词向量同维度的段落向量(可看作另一个词向量)。

Doc2Vec模型存在分布式记忆(DM)模型和分布式词袋(DBOW)模型,分别对应Word2Vec模型里面的CBOW模型和Skip-Gram模型。

DM模型与CBOW模型相对应,可以根据上下文词向量和段落向量预测目标词的概率分布。

DBOW模型与Skip-Gram模型相对应,只输入段落向量,DBOW模型可以预测从段落中随机抽取的词组的概率分布。

CBOW模型 DM模型 Skip-Gram模型 DBOW模型
输入特定词的上下文对应的独热向量 输入上下文词向量和段落向量 输入特定词的独热词向量 输入段落向量
输出这个特定词的概率分布 预测目标词概率分布 输出这个特定词的上下文概率分布 预测段落中随机抽取词组概率分布
适用于小型语料 在大型语料表现更好

第十章、NLP中的深度学习技术

循环神经网络(RNN)是以序列数据为输入,在序列的演进方向进行递归,并且所有节点按链式连接的递归神经网络。

RNN适合用于处理视频、语言、文本等与时序相关的问题。常见应用邻域有文本生成、语言模型、图像处理、机器翻译、语言识别、图像描述生成、文本相似度计算、音乐推荐和商品推荐等。

RNN结构按输入和输出的序列长度可划分为多对一、等长的多对多(经典结构)和非等长3种结构。  

双向RNN不仅考虑预测词前面的词,还考虑该词后面的内容

LSTM使RNN具备避免梯度消失的特性,从而让RNN自身具备处理长期序列依赖的能力。LSTM神经网络模型使用门结构实现了对序列数据中的遗忘与记忆。

TensorFlow的特点:

  1. 高度的灵活性

  2. 可移植性

  3. 综合了科研和产品

  4. 自动计算梯度导数

  5. 性能最优化

  6. 多语言支持

上一篇:
Cpp
下一篇:
python 编写自动发送每日电子邮件报告的脚本