NLP理论基础和实践task-02文本表示

一、词袋模型概念

缺点:没有考虑文本中词与词之间的上下文关系(即不考虑词语之间的顺序)

  1. 离散
    词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重。
  2. 高维
    词袋模型由于大部分文本都只会用词汇表中很少一部分的词,因此词向量中有大量的0,所以是向量的维度是很大的。
  3. 稀疏
    词袋模型由于大部分文本都只会用词汇表中很少一部分的词,因此词向量中有大量的0,也就是说词向量是稀疏的。

二、分布式表示模型

分布式表示(distributed representation),描述的是把文本分散嵌入到另一个空间,一般从是从高维空间嵌入到低维空间。
参考 http://www.sohu.com/a/231566096_633700

  1. 连续
  2. 低维
  3. 稠密

三、Word2vec词向量原理

从向量的角度来看,字符串形式的词语其实是更高维、更稀疏的向量。若词汇表大小为N,每个字符串形式的词语字典序为i,则其被表示为一个N维向量,该向量的第i维为1,其他维都为0。汉语的词汇量大约在十万这个量级,十万维的向量对计算来讲绝对是个维度灾难。而word2vec得到的词的向量形式(下文简称“词向量”,更学术化的翻译是“词嵌入”)则可以自由控制维度,一般是100左右。

在这里插入图片描述
word2vec主要包括两种模式:CBOW与Skip-Gram模式
其中的原理参考 http://www.hankcs.com/nlp/word2vec.html

  1. CBOW(Continuous Bag of Words)
    CBOW是从原始语句推测目标字词,CBOW对小型数据库比较合适
  2. Skip-Gram
    Skip-Gram是从目标字词推测出原始语句,Skip-Gram在大型语料中表现更好

实验部分
实验部分是《人民的名义》小说作为训练语料,分词采用的是结巴分词,使用gensim库中的word2vec模块,
各个参数含义如下sentences (iterable of iterables, optional) – 供训练的句子,可以使用简单的列表,但是对于大语料库,建议直接从磁盘/网络流迭代传输句子。hs ({0, 1}, optional) – 1: 采用hierarchical softmax训练模型; 0: 使用负采样。min_count (int, optional) – 忽略词频小于此值的单词。window (int, optional) – 一个句子中当前单词和被预测单词的最大距离。size (int, optional) – word向量的维度。
主要代码如下:

import logging
import os
from gensim.models import word2vec
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

sentences = word2vec.LineSentence(r'D:/in_the_name_of_people_segment.txt')

model = word2vec.Word2Vec(sentences, hs=1, min_count=1, window=3,size=20)  

req_count = 5
for key in model.wv.similar_by_word('沙瑞金',topn =20):   #20是设置每个词语提取向量的个数
    if len(key[0])==3:
        req_count -= 1
        print (key[0], key[1])
        if req_count == 0:
            break;

print(model['沙瑞金'])

结果是与“沙瑞金”最相近的词以及相似度
在这里插入图片描述
“沙瑞金”对应的向量
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值