词向量的使用。

通用的词向量包含word2vec,glove,fasttext三种方式,通过n-gram以及COBW或者skip-gram的方式获取得到, 这边分享一个词向量的GitHub资

Embedding/Chinese-Word-Vectors​github.com

  1. 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)

  1. 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中文文本分类任务的笔记(一)相关推荐

  1. 基于Keras预训练词向量模型的文本分类方法

    本文语料仍然是上篇所用的搜狗新闻语料,采用中文预训练词向量模型对词进行向量表示.上篇文章将文本分词之后,采用了TF-IDF的特征提取方式对文本进行向量化表示,所产生的文本表示矩阵是一个稀疏矩阵,本篇采 ...

  2. 文本分类Keras RNN实践——应用腾讯和百度中文词向量

    中文词向量 深度学习在NLP领域大展身手,而深度学习处理文本,离不开文本的向量化. 英语独特的语法规则,使得单用空格就能将句子中的单词分割开来,从而取得词向量,这极大简化了英语的NLP预处理过程,工业 ...

  3. 【NLP】基于Word2Vec词向量的中文文本相似度匹配

    Word2Vec 词向量可以用于测量单词之间的相似度,相同语义的单词,其词向量也应该是相似的.对词向量做降维并可视化,可以看到如下图所示的聚类效果,即相近语义的词会聚在一.     文本或句子相似度问 ...

  4. 腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

    今日,腾讯AI Lab 宣布开源大规模.高质量的中文词向量数据.该数据包含800多万中文词汇,相比现有的公开数据,在覆盖率.新鲜度及准确性上大幅提高,为对话回复质量预测和医疗实体识别等自然语言处理方向 ...

  5. AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法

    导读:词向量算法是自然语言处理领域的基础算法,在序列标注.问答系统和机器翻译等诸多任务中都发挥了重要作用.词向量算法最早由谷歌在2013年提出的word2vec,在接下来的几年里,该算法也经历不断的改 ...

  6. 词向量算法—【AAAI2018】蚂蚁金服公开的基于笔画的中文词向量算法

    词向量算法是自然语言处理领域的基础算法,在序列标注.问答系统和机器翻译等诸多任务中都发挥了重要作用.词向量算法最早由谷歌在2013年提出的word2vec,在接下来的几年里.该算法也经历了不断的改进, ...

  7. 清华 词向量库_word2vec 构建中文词向量

    词向量作为文本的基本结构--词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良好的词向量可以达到语义相近的词在词向量空间里聚集在一起,这对后续的文本分类,文本聚类等等操作提供了便利,本文 ...

  8. word2vec 构建中文词向量

    2019独角兽企业重金招聘Python工程师标准>>> word2vec 构建中文词向量 词向量作为文本的基本结构--词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良 ...

  9. 使用transformers框架导入bert模型提取中文词向量

    导言 在笔者的上一篇文章大白话讲懂word2vec原理和如何使用中提到了如何将词语转变成计算机能够识别的语言,即将文本数据转换成计算机能够运算的数字或者向量这个概念,并详细阐述了word2vec这个模 ...

最新文章

  1. ecshop根目录调用_ecshop优化修改sitemap.xml到根目录
  2. Linux实现后台运行程序及查看nohup jobs
  3. 换种思路去理解设计模式
  4. SAP UI5 初学者教程之应用开发 - 过滤器 filter 的开发和使用
  5. 斯坦福大学机器学习——高斯判别分析
  6. 10 道关于 Java 泛型的面试题
  7. 信号与系统 chapter13 阶跃响应的定义与求法
  8. 计算机一级发邮件发送多个抄送,计算机一级考试IE题和收发邮件模拟题.docx
  9. 马上就校招了,是要去实习还是复习?
  10. select 1 from 浅析
  11. markdown 本地链接_markdown多平台发布及七牛图床使用
  12. 秒杀项目(1)项目环境搭建
  13. 安卓基于图像识别和CNN做出一个通用的斗地主记牌器(一)
  14. 2021最全HW蓝队指导手册
  15. 编写简单的内核模块——Linux操作系统原理与应用(陈莉君第2版13页)
  16. 关于软件开发的那些事(二):聊聊协同打单的一些心得体会
  17. GB28181系列笔记-语音对讲功能
  18. 小米MIUI备份/小米助手数据通过BAK进行恢复 | 生成MIUI的descript.xml文件进行数据恢复 | 手动恢复MIUI备份/小米助手数据
  19. Github上8个很棒的Vue项目
  20. 自动化测试工具 Java等

热门文章

  1. SQL Server 大数据量插入和索引关系
  2. 模板匹配(Match Template)
  3. JSONPATH使用方法
  4. sql server 2005 时间转化获取年,有一个时间如2009-07-15,现在要分别查出年、月、日,...
  5. spring boot在运行测试类Error creating bean with name ‘serverEndpointExporter‘ defined...问题解决方案
  6. 面试不懂分布式锁?那得多吃亏
  7. mysql数据库永久设置手动提交事务(InnoDB存储引擎禁止autocommit默认开启)
  8. mysql select into和insert into select
  9. composer安装fxp插件时候提示内存不足且没有交换空间的解决办法
  10. Linux下修改root密码以及找回root密码的方法