![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自然语言处理
文章平均质量分 73
记录自然语言处理相关的心得笔记
HadesZ~
HadesZ~的博客主页
展开
-
自然语言处理(NLP)之五:知识图谱
现在的很多数据是互相连接的,如果想分析这些链接的价值,知识图谱可以是一种有效的工具。而且随着万物互联时代的到来,链接中所包含的信息必然会发挥更大的价值,这也是为什么知识图谱在最近几年发展这么快的主要原因。知识图谱的概念、应用、构建知识图谱的定义知识图谱是2012年Google公司提出的一个新名词,这项技术的出现可以追溯到上世纪的六七十年代,在Google公司为发展产业化将其称为知识图谱之前,它一直被学术界称作语义网络(Semantic Network)。ICSW(international con原创 2022-04-07 15:22:03 · 7031 阅读 · 0 评论 -
自然语言处理(NLP)之四:信息抽取
0. 信息抽取信息抽取(information extraction, IE)是将非结构化或半结构化描述的自然语言文本转化成结构化特征的一种基础自然语言处理(NLP)任务,它包括三类子任务:抽取文本中指定类型的实体(实体抽取/命名实体识别,NER);抽取实体之间的语义关系(关系抽取,RE);文本中的事件(event)。1. 实体抽取(命名实体识别,NER)实体抽取(Entity Extraction)又名命名实体识别(Named Entity Recognition, NER)或专名识别,是原创 2022-03-19 19:33:55 · 12500 阅读 · 0 评论 -
自然语言处理(NLP)之三:语言模型
语言模型是预测句子符合语法规范(语言惯用的单词搭配规范)的概率的计算方法,对给定语句S=W1,W2,W3,…,WnS = W_1, W_2, W_3, …, W_nS=W1,W2,W3,…,Wn,其表达式为:P(S)=P(W1,W2,W3,…,Wn)P(S) = P(W_1, W_2, W_3, …, W_n) P(S)=P(W1,W2,W3,…,Wn)P(W1,W2,W3,…,Wn)P(W_1, W_2, W_3, …, W_n)P(W1,W2,W3,…,Wn),W1,W2原创 2022-02-05 15:24:09 · 3067 阅读 · 0 评论 -
自然语言处理(NLP)之二:文本表示(词向量)
周所众知,非数值型的文本数据不能直接输入机器学习模型,要先经过编码转化成数值型数据才可用于模型训练或预测。而文本表示,就是研究如何将文本数据合理编码成数值型数据的技术。文本的划分单元从小到大依次为单词、短语、句子、段落和篇章。其中,句子的表示法依赖于单词,而段落又依赖于句子,以此类推,可以说文本的表示是建立在单词的表示基础之上的。所以单词的表示法最为基础,也最为重要,单词的表示法常见有独热编码表示法和词向量表示法等。单词的独热编码表示法首先根据语料库建立一个词库,然后创建一个维度等于词库大小的独热编码原创 2022-01-07 21:25:16 · 4288 阅读 · 0 评论 -
自然语言处理(NLP)之一:文本预处理(文本准备)
拿到文本数据后,自然语言处理任务的第一步工作是文本(数据)准备或叫文本(数据)预处理。文本预处理的流程如下图所示:原创 2022-01-20 23:13:55 · 13792 阅读 · 0 评论 -
通过 Docker 灵活部署 Neo4j 图数据库
neo4j原创 2022-11-22 10:54:08 · 928 阅读 · 0 评论 -
图数据库(Neo4j)入门
Neo4j 是一种目前主流的图数据库原创 2022-08-05 09:26:14 · 1111 阅读 · 0 评论 -
正则表达式快速入门笔记
正则表达式快速入门笔记原创 2022-07-28 13:19:25 · 203 阅读 · 0 评论 -
知识图谱:知识表示
知识图谱中,知识的结构化表示主要有和两类方法。早期,常用一阶谓词逻辑(FirstOrderLogic)、语义网络(semanticnetwork)、描述逻辑(DescriptionLogic)和框架系统(FrameSystem)等基于符号逻辑的知识表示方法。而,主要使用基于图数据结构的三元组形式(头实体,关系,尾实体)来符号化地表示知识。...原创 2022-07-23 20:58:57 · 4248 阅读 · 0 评论 -
知识图谱:基础知识
知识图谱是关于某个主题的知识的结构化表示所组成的关系网络,它由节点和(连接不同节点的)边构成,本质上是一种语义网络。知识图谱中的每个节点代表该主题内一个实体或概念,边代表相连实体或概念间的语义关系。数据未经处理过的事实或信号的记录等(即非结构化数据)信息经过解释整理,被赋予意义的数据(即结构化数据)知识从信息中推断或预测出的事实或规律例如对简历解析任务来说一份原始的pdf或word格式简历文件就是数据,因为它是直接采集(收集)到的客观事实、尚未经任务人工处理;...............原创 2022-07-20 20:41:32 · 1594 阅读 · 0 评论 -
梯度累积(Gradient Accumulation)
随着深度学习模型参数量的增加,现有GPU加载一个深度模型(尤其是预训练模型)后,剩余显存无法容纳很多的训练数据,甚至会仅能容纳一条训练数据。梯度累积(Gradient Accumulation)是一种不需要额外硬件资源就可以增加批量样本数量(Batch Size)的训练技巧。...原创 2022-06-01 09:37:05 · 3082 阅读 · 0 评论 -
语言模型:注意力机制(Attention)
1. 注意力机制(Attention)注意力机制(Attention Mechanism)是一种信息筛选方法,可进一步缓解LSTM和GRU中的长期依赖问题。其实现分三步进行:它首先引入一个和任务相关的表示向量作为特征选择的基准,该向量被称为查询向量(Query Vector);然后选用一种打分函数计算输入特征与查询向量之间的相关性,得到特征被选择的概率分布,这称作注意力分布;最后按注意力分布对输入特征的加权平均筛选出与任务相关的特征信息。1.1 查询向量(Query Vector)如图所示,查询向量原创 2022-04-02 20:33:53 · 2970 阅读 · 0 评论 -
预训练模型:GPT
GPT 是 OpenAI 在论文《Improving Language Understanding by Generative Pre-Training》中提出的生成式预训练语言模型。该模型的核心思想是通过二段式的训练,以通用语言模型加微调训练的模型完成各项下游NLP任务,包括文本生成、二分类、蕴含、相似度、多分类等。1. 预训练任务GPT模型采用标准的语言模型训练方法,即给定上文令模型预测下一单词,模型的目标函数为:Li=∑t∈TlogP(ut∣ut−k,⋯ ,ut−1;θ)L_i = \sum_原创 2022-03-31 21:15:09 · 2670 阅读 · 0 评论 -
预训练模型:BERT
0. BERT总述BERT全称为 Bidirectional Encoder Representation from Transformers(来自 Transformers 的双向编码器表示),是谷歌2018年发表的论文中1,提出的一个面向自然语言处理任务的无监督预训练语言模型。其意义在于:大量无标记数据集中训练得到的深度模型,可以显著提高各项自然语言处理任务的准确率。BERT采用Transformer的编码器(Encoder)结构作为特征提取器,并使用与之配套的MLM训练方法,实现输入序列文本的双向原创 2022-03-31 13:32:15 · 13934 阅读 · 1 评论 -
时序模型:线性条件随机场模型 ( Linear - CRF )
1. 线性条件随机场(Linear-CRF)线性条件随机场(linear chain conditional random field,Linear-CRF)是对隐马尔科夫模型(hidden Markov model,HMM)在更普遍的实际问题上的推广1。隐马尔科夫(HMM)模型假设序列数据具有齐次马尔可夫性和观测独立性,这是对实际问题的两种近似简化。线性条件随机场(Linear-CRF)模型取消了观测独立性假设,并削弱了齐次马尔可夫性假设;Linear-CRF考虑一个模型每时刻隐藏状态,都是受其相邻时原创 2022-03-26 07:34:18 · 4170 阅读 · 0 评论 -
文本生成:Transformer
1. 模型原理Transform是一种基于全连接神经网络的编码器-解码器(encoder-decoder)架构实现,它由输入模块、编码器模块、解码器模型和输出模型四部分组成。其结构如下图所示:图1 Transform模型关于Transform的基础知识介绍,网上已有许多公开的资料。读者可自行查阅学习。本文默认大家已具备Transform相关的基础知识,文本将讨论其中值得注意的四个问题:Transform中有几种mask机制,它们是如何去除小批量样本padding操作引入的噪声的?自注意力机制为原创 2022-03-17 19:05:46 · 2668 阅读 · 1 评论 -
文本生成:加入注意力( Attention )机制的 Seq2Seq
1. 加入Attention机制的Seq2Seq模型注意力层(Attention)添加到解码器与输出层之间,它负责从编码器输出序列中挑选出任务相关的信息,将其与解码器输出序列最后时刻状态一起传入输出层,供文本生成预测使用。如下图所示:图1 加入Attention机制的Seq2Seq 模型Attention机制在计算注意力分布之前,引入由编码器(Encoder)输入序列长度决定的mask矩阵与注意力得分矩阵相乘,令输入序列padding值对应位置的注意力得分为0(然后再加一个负无穷),使计算注意力分布原创 2022-03-14 18:17:55 · 2919 阅读 · 0 评论 -
文本生成:Seq2Seq
1. Seq2Seq模型Seq2Seq是一种基于循环神经网络的编码器-解码器(encoder-decoder)架构实现。它使用两个神经元数量相同的LSTM(或GRU)作为编码器和解码器,如下图所示:图3 Seq2Seq 模型为配合Mini-batch SGD1模型训练策略,工程实现时要添加两种mask机制,来消除对输入序列和标签序列添加padding值进行(序列)长度补齐带来的噪声干扰。经典Seq2Seq模型的实现中,引入动态损失函数机制(mask softmax),来消除标签序列中padding值原创 2022-03-14 16:21:34 · 2436 阅读 · 0 评论 -
统计语言模型:N元语法模型(N-gram)
马尔科夫假设认为在一句话中,某单词的出现概率只与它前面的前 nnn 个单词有关。2.2.1 Bi-gram基于一阶马尔科夫假设衍生出Bi-gram语言模型,该模型假设句中单词的出现概率只与其前面相邻的前1个单词有关,所以模型表达式可简化成如下:P(S)=P(W1,W2,…,Wn)=P(W1)P(W2∣W1)⋯P(Wn∣Wn−1)(4)P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2|W_1) \cdots P(W_n|W_{n-1}) \tag{4}P(S)=P.原创 2022-02-19 15:49:46 · 1091 阅读 · 0 评论 -
统计语言模型:统计语言模型的平滑方法
本文从分析可能导致统计语言模型条件概率稀疏的原因入手,引出对应的平滑方法解决方案。1. Add-One Smoothing一种可能导致语言模型条件概率稀疏的原因是:训练语料库是对语料总体的一个抽样,它在抽样过程中必然会遗漏一些出现过的语句单词序列。因此,Add-One Smoothing 认为在训练语料库中未出现过语句单词序列,在总体语料中未必不会出现;它假设训练语料抽样对每种语句单词序列的出现情况最少会漏掉一次,所以在统计条件概率时,对每种情况的出现次数加1,其表达式如下所示:PBi−gram(Wi原创 2022-02-19 15:41:43 · 768 阅读 · 0 评论 -
隐马尔科夫模型(HMM):状态序列预测
c原创 2022-02-12 14:30:10 · 1398 阅读 · 0 评论 -
隐马尔科夫模型(HMM):模型参数估计
原创 2022-02-15 15:53:31 · 2042 阅读 · 1 评论 -
隐马尔科夫模型(HMM):计算观测序列的出现概率
a原创 2022-02-11 11:58:33 · 1322 阅读 · 0 评论 -
时序模型:隐马尔科夫模型(HMM)
隐马尔科夫模型的定义隐马尔科夫模型(hidden Markov model,HMM)描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔科夫链随机生成的状态的序列,称作状态序列(state sequence);每个状态生成一个观测而产生的观测的随机序列,称为观测序列(observation sequence)。序列的每一个位置又可以看作是一个时刻。隐马尔科夫模型成立的两个基本假设隐马尔科夫模型解决的三个基本问题观测序列出现概率计算原创 2022-02-07 17:04:25 · 2294 阅读 · 0 评论 -
词向量:哈夫曼(Huffman)编码
import numpy as np#class BinaryTreeNode(object): def __init__(self,value): self.left = None # 左子树 self.right = None # 右子树 self.value = value # the value of word #class HuffmanTreeNode(BinaryTreeNode): ''' co原创 2022-02-05 15:28:36 · 514 阅读 · 0 评论 -
词向量:由 Word2Vec 的 SkipGram 推导出一种词向量模型范式
目录:1. SkipGram模型2. SkipGram模型的简化方法3. 负采样简化SkipGram模型3.1 负采样简化SkipGram模型的算法原理3.2 负采样简化SkipGram模型的代码实现3.2.1 负采样3.2.2 单词的向量化表示与模型向量计算方法4. 负采样简化SkipGram模型的拓展(得出范式)参考文献:1. SkipGram模型SkipGram模型的任务定义是:预测与输入单词搭配出现的上下文单词;这符合多分类机器学习任务场景,可以采用输入单词的词向量为特征,与其搭配的上下文单词的原创 2022-02-02 23:31:51 · 1264 阅读 · 0 评论 -
词向量:词向量的可视化
词向量评价方法词向量的目的是通过向量编码来表示单词的含义,一个好的词向量系统中,语义相近的单词间的距离也会越近。因此,将单词的词向量映射到空间坐标系中进行可视化观察,是最简单的词向量表示质量评价方法。词向量的可视化可视化中,三维空间绘图较为容易实现,对于高于3个维度的向量要先通过降维算法压缩到3维及以内,然后才便于可视化作图。由此,词向量可视化具体实现代码如下:import numpy as npfrom sklearn.manifold import TSNEdim_reduce = TS原创 2022-01-21 15:29:02 · 1550 阅读 · 0 评论 -
文本表示:静态词向量模型
文本的词向量表示又叫文本的分布式表示,它源自于语言学家的语境理论。语言学家Firth认为:“语言是人类的生活方式,词语的含义根植于人类赖以生存的社会活动中”;也就是说,词语的含义存在于语境中,由与它搭配出现的上下文词语体现[1-2]。这就是词向量分布式假设的核心思想:通过研究词汇与其他上下文词汇的搭配方式来产生编码向量,使编码向量能代表词汇在语境中所表达的含义,即可通过数学计算来理解或预测语言的含义了。参考文献:[1] HARRIS Z S J W. Distributional structure原创 2022-01-26 22:06:17 · 2012 阅读 · 0 评论 -
文本表示:词袋模型
1. 词袋模型独特编码表示系统由,独热编码(Onehot Encoding )、频数编码(Count Encoding)、TF-IDF编码三种方法逐层递进构成。1.1 Onehot Encoding对非数值型调特征来说,最常见的特征编码方法就是标签编码(Label Encoding)和独热编码(Onehot Encoding )。Onehot Encoding凭借任意不同类别编码向量间距离相同的特性,可简化文本表示中对单词文本相似度的考量(因为任意两不同单词编码结果的相似度都相同),成为了最先发展原创 2022-01-14 21:32:57 · 3183 阅读 · 0 评论 -
文本表示:文本相似度
1. 文本相似度定义我们都知道,单词中有同义词、近义词和反义词之分,这表明不同单词间的相似程度也截然不同。对于文本表示,我们也要衡量单词编码向量间的相似程度与单词本身词义间相似程度的一致性,以此来评价文本表示的质量。2. 文本相似度计算方法定量计算两个文本之间的相似程度,就是定量计算文本表示后两个向量之间的相似度。一种衡量两向量相似度的方式是计算它们之间的距离,距离越小相似度越高、距离越大相似度越小,常用的向量距离计算指标有欧式距离和余弦相似度两种。2.1 欧氏距离欧氏距离 dEd_EdE 表示原创 2022-01-07 23:40:40 · 962 阅读 · 0 评论 -
文本预处理:拼写纠错
拼写纠错拼写纠错步骤主要检查并改正两类文本错误,即单词的拼写错误和单词的语法使用错误。拼写错误纠正,首先检测词库外的单词识别为拼写错误单词,然后找出词库中与错误单词编辑距离最小的词作为改正项,替换它。而语法使用错误纠正,需借助语言模型实现。1.1 单词拼写错误纠正实现单词拼写错误纠正的原理性方法编辑距离计算法方法:单词拼写错误纠正的工程实现方法与给定字符串指定编辑距离的新字符串生成代码:# 与给定字符串指定编辑距离的新字符串生成方法def gen_editOne_str(str_:原创 2022-01-05 15:32:44 · 1377 阅读 · 0 评论 -
文本预处理:词的标准化
词的标准化词的标准化一般用于英文文本,用于将不同时态、不同人称或单复数的同一单词统一映射成同一种拼写方式,有Stemming和Lemmazation两类算法。Stemming类算法根据语言学规则对单词进行标准化,它转化的结果并不一定是一个真实存在的单词,如fly和flies会标准化为fli。Lemmazation是一类更为严格的算法,它的转化结果一定是一个真实存在的单词。单词标准化实现代码:from nltk.stem.porter import *stemmer = PorterStemmer原创 2022-01-05 15:31:16 · 1600 阅读 · 0 评论 -
文本预处理:词的清洗
词的过滤词过滤是文本清洗的一个步骤,一般放在分词之后,用于过滤掉对模型任务无用的词。无用词一般包含停用词和低频词两类:停用词指经常会出现在所有文档中的不表示具体含义的虚词,它去模型预测无意义,可以去除;低频词就是语料库中,在本场景下极少出现使用的单词,它是否可以去除需要人工判断,有些词在文本中出现频率极低但意义特别重要,此时应保留。所以综上,其他场景中的停用词和低频词是否在本场景中仍要过滤去除,需要人工逐一判断,它没有统一标准。词过滤实现代码:# 加载停用词列表stop_words =原创 2022-01-02 20:32:57 · 2207 阅读 · 0 评论 -
文本预处理:分词
分词是所有工作的第一步,分词的准确性直接影响对后续任务的表现。但目前分词技术已相对成熟,实际工作中结巴分词等开源工具即可满足我们的需要。原创 2022-01-02 19:48:04 · 3363 阅读 · 0 评论