![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自然语言处理
文章平均质量分 58
weixin_56336619
这个作者很懒,什么都没留下…
展开
-
Adversarial Analysis of Natural Language Inference Systems
Adversarial Analysis of Natural Language Inference Systems自然语言推理系统的对抗分析摘要SNLI 和 MNLI 等大型自然语言推理 (NLI) 数据集的发布导致了该任务的完全神经系统的快速开发和改进。最近,经过大量预训练、基于 Transformer 的模型(如 BERT 和 MT-DNN)在这些数据集上已达到接近人类的性能。然而,这些标准数据集已被证明包含许多注释工件,允许模型使用简单易错的启发式方法进行快速理解,并且在测试集上仍然表现良好。翻译 2021-07-12 21:46:53 · 247 阅读 · 0 评论 -
Sparse transformer - 之Sparse attention 稀疏注意力
Sparse Transformer: 主要目的是减少传统Transformer 的时间复杂度和空间复杂度。通过top-k选择,将注意退化为稀疏注意。这样,保留最有助于引起注意的部分,并删除其他无关的信息。这种选择性方法在保存重要信息和消除噪声方面是有效的。注意力可以更多地集中在最有贡献的价值因素上。论文《Generating Long Sequences with Sparse Transformers》self-attention是O(n^2),因为对序列中任意两个位置的均建立起关联;节省显.原创 2021-06-10 18:57:06 · 4724 阅读 · 0 评论 -
三种位置编码Position Embedding
1.为什么要位置编码?处理序列问题对于传统CNN、RNN模型,因其处理机制模型本身已经具备很强的捕捉位置信息的特性,所以position embedding属于锦上添花使用attention机制取代cnn、rnn的如transformer、bert模型,本身是一个n*n不包含任何位置信息的词袋模型所以需要和字embedding 相加[1].基于绝对位置计数embedding = 0 , 1, ,2, 3缺点:序列没有上界 ,与字embedding合并 数值变化过大 干扰模型解决:使其原创 2021-06-05 18:45:51 · 6547 阅读 · 0 评论 -
统计句法分析——用C++实现nltk.ViterbiParser
先上python使用封装好的包的代码和运行结果:grammar3 = PCFG.fromstring(""" S -> NP VP [0.9] S -> VP [0.1] VP -> V NP [0.5] VP -> V [0.1] VP -> V VP_V [0.3] VP -> V PP [0.1] NP -> NP NP [0.1] NP -> NP PP [0.2] NP -&g原创 2021-05-17 16:00:33 · 355 阅读 · 0 评论 -
词嵌入(二)分布式表示
One-hot编码仅仅将词语符号化,丢失语义信息,且维度灾难。与one-hot编码表示技术相对应的是分布式表示分布式假说(Distributional Hypothesis):上下文中相似的词其语义也相似——词的语义由其上下文决定基于分布式假说的词表示方法,根据建模方式分为三类——基于矩阵的分布表示、基于聚类的分布表示、基于神经网络的分布表示1.基于矩阵的分布表示,构建词-上下文矩阵上下文:文档:即词-文档矩阵上下文的每个词:即词-词矩阵ngrams:即词-n元组矩阵矩阵中的每个元素为词原创 2021-04-30 16:35:53 · 725 阅读 · 1 评论 -
词嵌入(一)第一代预训练模型
不是初识 不断学习不断遗忘不断理解*词嵌入将语义相似的两个单词映射到两个独立但相似的实值向量,因此可以聚集在一起。——词嵌入的过程像一个聚类过程,产生很多相似向量簇将单词转换成实值向量的过程称为矢量化Word2Vec 两层神经网络——浅层神经网络输入是一个文本语料库,生成矢量作为输出。——输出的矢量称为单词的‘特征向量’。将语料库转换成可以被深层神经网络系统理解的数值数据。是大小为n * n的共词矩阵的分解(压缩)GloVe== Global vector 建立在Word2Vec基础Wor.原创 2021-04-28 00:01:36 · 326 阅读 · 0 评论 -
使用biLSTM_CRF完成词性标注任务
使用Pytorch框架中定义好的biLSTM_CRF模型和超参数,主要目的是加深学习印象;过去一段时间对序列标注任务学习的梳理,学习的过程中有不断修正之前的理解里谬误的地方;本文是对tutorial的示范例子的一次依葫芦画瓢,仅作为对之前学习内容的回顾总结和实践,最重要的还是先对知识和模型的学习!pytorch的官方文档学习过程做的笔记:对biLSTM_CRF模型的理解对pytorch官方文档里biLSTM_CRF模型的源码学习(一)整体理解(二)预定义方法、模型的初始化工作(三)前向传播原创 2021-04-27 17:45:27 · 901 阅读 · 1 评论 -
Soundex算法对字符串编码
目标:将输入单词转换为Soundex编码#soundex 算法实现步骤word = input().lower()s=""for ch in word: if s =="": #该单词的第一个字符保留为soundex代码的第一个字符 s+=ch continue if ch in "aeiouhwy": continue #丢弃以下字母 aeiouhwy #剩下的辅音按照下表中给定的规则赋值一个数字代码 if原创 2021-04-26 15:33:35 · 239 阅读 · 0 评论 -
pytorch中biLSTM_CRF模型源码学习(三):前向传播中计算forward_score和gold_score
上一节地址:pytorch中biLSTM_CRF模型源码学习(二):预定义方法 和 模型的初始化工作回顾一下biLSTM_CRF的逻辑:在一个epoch的训练中流程: 1.初始化梯度为0 2.构建张量 3.前向传播 4.反向传播 更新权重3.前向传播中:biLSTM提取输入序列的特征,输出feats作为发射概率分布计算前向得分——当前转移概率分布和发射概率分布feats下模型的得分最高的路径的得分计算标签序列的真实得分计算得分的差值作为损失函数值loss4.反向传播中loss原创 2021-04-25 20:19:40 · 674 阅读 · 0 评论 -
pytorch中biLSTM_CRF模型源码学习(二):预定义方法 和 模型的初始化工作
上一节地址:解读pytorch中的biLSTM_CRF源码(一)本节目录预定义的helper函数class biLSTM_CRF中的部分成员方法__init__,init_hidden,_get_lstm_features预定义的helper函数1.to_scalardef to_scalar(var): # 将变量转化为标量 # returns a python float return var.view(-1).data.tolist()[0]变量将张量对象、梯度及创.原创 2021-04-25 19:18:57 · 291 阅读 · 0 评论 -
解读pytorch中的biLSTM_CRF源码(一)
biLSTM_CRF的理解可以看之前的这篇博客pytorch的英文文档biLSTM_CRF的是训练出一个模型完成序列标注任务——给定任意输入序列和标签集,输出标注序列。这个模型实现将输入序列映射到输出序列——在nlp的词性标注POS-tagging任务中,是将给定句子(词序列)映射为大小相同的词性标注序列。这个模型需要A转移概率分布 隐藏状态之间的转移 [词性][词性]B发射概率分布 从观测状态转移到隐状态的概率 [词性][单词]显然,biLSTM_CRF模型和hmm模型的区别之一就是,h原创 2021-04-21 15:05:44 · 769 阅读 · 0 评论 -
循环神经网络的隐藏状态——理解注意力机制 Attention 中的Q、K、V (查询Query、键值Key、值项Value)
前言:依然借用机器翻译任务作为例子来理解这些概念注意力机制Attention 是 基于Encoder-Decoder框架的encoder-decoder本质是两个循环神经网络(‘隐藏状态’ 或 ‘记忆细胞’记录当前时间步的信息,并传递到下一时间步),做的事情就是将输入序列映射到输出序列。也即是机器翻译任务中的seq2seq模型。encoder-decoder本质是两个循环神经网络(隐藏状态/记忆细胞记录当前时间步的信息)下面是学习attention机制过程中保存的笔记:一个注意力模型原创 2021-04-20 17:20:10 · 8269 阅读 · 0 评论 -
使用Lucene建立索引 && 使用Luke工具检查索引文件
任务:下载语料、保存为xml格式、使用Lucene为下载语料建立索引、使用索引查看工具Luke检查索引文件使用Python的requests爬取网页import requestsres = requests.get(u)res.encoding = 'utf-8'txt = res.text获取的网页内容是在一堆标签组成的,用正则表达式匹配自己想要的内容import retitle_result = re.findall(r"<title>.*</title>原创 2021-04-20 11:30:31 · 279 阅读 · 0 评论 -
self-attention 与 attention机制的关系
attention和self-attention 使用机器翻译任务例子理解两者之间的关系假设:原文长度n , 输入序列source,输出序列targetquery, key, value target序列中的某个元素query Source序列是一系列<key,value>数据对score function对于一个query , 和所有的key做向量点积 (a.b = |a||b|cosµ) 度量两个词的相似度 ,越相似,点积越大 ——长度为n的list 得分值score[i]原创 2021-04-20 00:08:15 · 564 阅读 · 0 评论 -
用Python写一个基于统计的隐马尔可夫模型+viterbi动态规划算法 ——完成序列标注任务
序列标注是自然语言处理的基本任务,而隐马尔可夫模型前向算法是序列标注任务中的经典算法,在序列标注任务中,观测状态:词序列;隐状态:词性标注序列。隐马尔可夫模型前向算法一般用于解决三类问题<1>给定隐马尔可夫模型M=(A,B),计算某个观测序列O出现的概率,即计算P(O|M) (A表示转移概率,B表示发射概率) 。<2> 给定一个观测序列O和一个HMM模型M,寻找最好的隐序列Q以便最好的解释观测值 (解码)<3>使用基于统计的方法,学习最佳HMM参数模型A和B.(原创 2021-04-16 19:30:27 · 534 阅读 · 0 评论 -
序列标注任务:BiLSTM-CRF模型中 条件随机场CRF的应用
本文是对这篇知乎文章的学习笔记BiLSTM-CRF概念-命名实体识别NER中两个不同的层-输入:词嵌入向量 ; 输出:单词对应的预测标签先验知识--命名实体识别(NER)系统的目标是识别所有文字提及的命名实体。可以分解成两个子 任务:确定 NE 的边界和确定其类型本文将围绕一个具体的实例来展开->现在假设这个数据集中仅存在两种实体,相应的,只会产生五种类别的标签如下:-数据集中 两类实体:人名、机构名-五类标签 :B-person,I-person,B-Organization,I原创 2021-04-13 18:13:47 · 427 阅读 · 1 评论 -
初识词性标注:条件随机场CRF是什么,CRF与HMM的区别
对条件随机场CRF的理解来源于这篇知乎回答基于HMM+维特比算法的词性标注解读,可以看我的这篇原创博文首先理解条件随机场:特征函数:用于给标注序列打分定义一组特征函数(一个特征函数集合)一个特征函数 接受传入的句子(标注序列),输出0或1,表示传入的标注序列是否符合这个特征每个特征函数j有权重w[j]exp函数:exp(x) = e^x第一层for循环:遍历特征函数集合第二层for循环:对于第j个特征函数:句子中每个位置单词的特征值相加指数化和标准化,得到标注序列的概率值总结:原创 2021-04-11 00:47:55 · 578 阅读 · 0 评论 -
向量空间模型 VSM:Vector Space Model
工业界仍在广泛使用,但在研究领域已经过时的一个方法;VSM使用在文本检索中:使用tf-idf权重向量表示查询和文档计算两个向量之间的相似度按照相似度对文档排序返回相似度top k篇文档给用户与布尔检索模型比较:布尔模型:要么匹配要么不匹配,匹配结果过多或过少;使用不方便,攥写布尔查询表达式困难;使用有效的相似度算法对文档进行打分的排序式检索避免了上述问题。...原创 2021-04-10 19:54:38 · 260 阅读 · 0 评论 -
词性标注 parts-of-speech tagging ,POS tagging
词性 parts-of-speech POS词性标注 parts-of-speech tagging ,POS tagging默认标注器: 为每个标识符分配同样的标记碰巧的是,一旦我们处理了几千词的英文文本之后,大多数新词都将是名词。正则表达式标注器:基于匹配模式 分配标记给标识符查找标注器:换句话说,我们要先使用查找表,如果它不能指定一个标 记就使用默认标注器,这个过程叫做回退(5.5 节)unigram 只考虑当前标志符,与上下文隔离为每个词标注其先验的最可能的标记——意原创 2021-04-10 10:26:00 · 215 阅读 · 0 评论 -
基于HMM+维特比算法的词性标注实验 附完整C++实现代码
一、理论描述1.在特定条件下,系统在时间t的状态只与其在时间t-1的状态相关 。这一随机过程称为马尔可夫过程。2.一个马尔可夫模型由三个部分组成:若干个状态;初始概率;转移概率矩阵。马尔可夫模型中,每个状态代表了一个可观察到的事件,因此如果知道某一事件的观察序列,可应用马尔可夫模型这一统计模型。3.当事件是不可直接观测到的,就称事件是隐状态。而可观察事件的状态为可观察状态。隐马尔可夫模型用于估算可观察事件背后的事件的概率,被认为是解决大多数自然语言处理问题最快速、有效的方法; 成功解决了复杂的语音识别原创 2021-03-20 19:15:29 · 1871 阅读 · 0 评论