glove中文词向量_NLP中文文本分类任务的笔记(一)
词向量的使用。
通用的词向量包含word2vec,glove,fasttext三种方式,通过n-gram以及COBW或者skip-gram的方式获取得到, 这边分享一个词向量的GitHub资
Embedding/Chinese-Word-Vectorsgithub.com
- word2vec/fasttext基本训练步骤:
step 1:准备词表,将词进行one-hot-encoding。
step 2:进行正负样本的采样,利用context word构建正负样本。
step 3:基于softmax进行浅层神经网络进行训练,fasttext的加速方法:
选择使用分层softmax, ngram的方式处理数据。
2. Glove的基本原理概述:
基于窗口的共现矩阵(windows based co-occurrence matrix)和词上下文出现的总词数形成一个共现频率矩阵, 类似于singular value decomposition的方法实现的。
传统文本分类的方法(LR,SVM,TEXTCNN)
- Logistic Regression:
LR的概率定义:
目标函数是:
mi. n -frac{1}{n}sum_{i=1}^{n}y_ilog(1-hat{p_i}) +(1-y_i)loghat{p_i}
2. SVM:
hard margin hinge loss:
soft margin loss 加入松弛变量
根据KKT条件,我们将其转化为对偶问题, 从而减少计算量:
核函数相关的
Linear Kernel:
Polynomial Kernel:
Radius Basis Kernel:
Sigmoid Kernel:
3. TEXT-CNN:
text-cnn 是一种高效且准确率有保障的一种文本分类算法, 具体的原理可以有下面的图片表示:
上面的图表示的是每个词被表征为一个向量,然后一句话就可以concatenate成一个词向量矩阵, 接下来,我们可以定义不同的 conv2d layer (如上图,我们用了不同的kernel, kernel size为2,3,4)。具体的代码实现如下。
class TextCNN(nn.Module):def __init__(self, config):super(TextCNN, self).__init__()self.config = configvocab_size = config["vocab_size"]embed_dim = config["emb_dim"]label_num = config["num_labels"]channel_i = 1channel_o = config["kernel_num"]kernel_sizes = config["kernel_sizes"]self.encoder = nn.Embedding(vocab_size, embed_dim)if vectors:self.encoder = self.encoder.from_pretrained(torch.tensor(vectors), freeze=True)self.convs = nn.ModuleList([nn.Conv2d(channel_i, channel_o, (k, embed_dim)) for k in kernel_sizes])self.dropout = nn.Dropout(config["dropout"])self.fc = nn.Linear(len(kernel_sizes)*channel_o, label_num)# self.fc1 = nn.Linear(config.max_len*embed_dim, label_num)def forward(self, sentence):x = self.encoder(sentence)x= x.unsqueeze(1) ## (N, 1, W, embed_dim)x = [F.relu(conv(x).squeeze(3)) for conv in self.convs] ## (N, channel_o, Wi]) i = 1,...,len(kernel_sizes)x = [F.max_pool1d(i, i.size(2)).squeeze(2) for i in x] ## (N, channel_o) * len(kernel_sizes)x = torch.cat(x, dim=1) ## (N, channel_o*len(kernel_sizes))x = self.dropout(x) ## (N, channel_o*len(kernel_sizes))logit = self.fc(x) ## (N, label_num)output = F.log_softmax(logit, dim=1)return output
glove中文词向量_NLP中文文本分类任务的笔记(一)相关推荐
- 基于Keras预训练词向量模型的文本分类方法
本文语料仍然是上篇所用的搜狗新闻语料,采用中文预训练词向量模型对词进行向量表示.上篇文章将文本分词之后,采用了TF-IDF的特征提取方式对文本进行向量化表示,所产生的文本表示矩阵是一个稀疏矩阵,本篇采 ...
- 文本分类Keras RNN实践——应用腾讯和百度中文词向量
中文词向量 深度学习在NLP领域大展身手,而深度学习处理文本,离不开文本的向量化. 英语独特的语法规则,使得单用空格就能将句子中的单词分割开来,从而取得词向量,这极大简化了英语的NLP预处理过程,工业 ...
- 【NLP】基于Word2Vec词向量的中文文本相似度匹配
Word2Vec 词向量可以用于测量单词之间的相似度,相同语义的单词,其词向量也应该是相似的.对词向量做降维并可视化,可以看到如下图所示的聚类效果,即相近语义的词会聚在一. 文本或句子相似度问 ...
- 腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用
今日,腾讯AI Lab 宣布开源大规模.高质量的中文词向量数据.该数据包含800多万中文词汇,相比现有的公开数据,在覆盖率.新鲜度及准确性上大幅提高,为对话回复质量预测和医疗实体识别等自然语言处理方向 ...
- AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法
导读:词向量算法是自然语言处理领域的基础算法,在序列标注.问答系统和机器翻译等诸多任务中都发挥了重要作用.词向量算法最早由谷歌在2013年提出的word2vec,在接下来的几年里,该算法也经历不断的改 ...
- 词向量算法—【AAAI2018】蚂蚁金服公开的基于笔画的中文词向量算法
词向量算法是自然语言处理领域的基础算法,在序列标注.问答系统和机器翻译等诸多任务中都发挥了重要作用.词向量算法最早由谷歌在2013年提出的word2vec,在接下来的几年里.该算法也经历了不断的改进, ...
- 清华 词向量库_word2vec 构建中文词向量
词向量作为文本的基本结构--词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良好的词向量可以达到语义相近的词在词向量空间里聚集在一起,这对后续的文本分类,文本聚类等等操作提供了便利,本文 ...
- word2vec 构建中文词向量
2019独角兽企业重金招聘Python工程师标准>>> word2vec 构建中文词向量 词向量作为文本的基本结构--词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良 ...
- 使用transformers框架导入bert模型提取中文词向量
导言 在笔者的上一篇文章大白话讲懂word2vec原理和如何使用中提到了如何将词语转变成计算机能够识别的语言,即将文本数据转换成计算机能够运算的数字或者向量这个概念,并详细阐述了word2vec这个模 ...
最新文章
- ecshop根目录调用_ecshop优化修改sitemap.xml到根目录
- Linux实现后台运行程序及查看nohup jobs
- 换种思路去理解设计模式
- SAP UI5 初学者教程之应用开发 - 过滤器 filter 的开发和使用
- 斯坦福大学机器学习——高斯判别分析
- 10 道关于 Java 泛型的面试题
- 信号与系统 chapter13 阶跃响应的定义与求法
- 计算机一级发邮件发送多个抄送,计算机一级考试IE题和收发邮件模拟题.docx
- 马上就校招了,是要去实习还是复习?
- select 1 from 浅析
- markdown 本地链接_markdown多平台发布及七牛图床使用
- 秒杀项目(1)项目环境搭建
- 安卓基于图像识别和CNN做出一个通用的斗地主记牌器(一)
- 2021最全HW蓝队指导手册
- 编写简单的内核模块——Linux操作系统原理与应用(陈莉君第2版13页)
- 关于软件开发的那些事(二):聊聊协同打单的一些心得体会
- GB28181系列笔记-语音对讲功能
- 小米MIUI备份/小米助手数据通过BAK进行恢复 | 生成MIUI的descript.xml文件进行数据恢复 | 手动恢复MIUI备份/小米助手数据
- Github上8个很棒的Vue项目
- 自动化测试工具 Java等
热门文章
- SQL Server 大数据量插入和索引关系
- 模板匹配(Match Template)
- JSONPATH使用方法
- sql server 2005 时间转化获取年,有一个时间如2009-07-15,现在要分别查出年、月、日,...
- spring boot在运行测试类Error creating bean with name ‘serverEndpointExporter‘ defined...问题解决方案
- 面试不懂分布式锁?那得多吃亏
- mysql数据库永久设置手动提交事务(InnoDB存储引擎禁止autocommit默认开启)
- mysql select into和insert into select
- composer安装fxp插件时候提示内存不足且没有交换空间的解决办法
- Linux下修改root密码以及找回root密码的方法