20180923 word2vec相似度改进(不浪费句子)

本文探讨了如何在word2vec中避免浪费句子,通过不使用无词向量的词语,提高模型效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没有词向量就丢掉,不放进词集合里,不浪费句子,的改进。


#!/usr/bin/python
# -*- coding: UTF-8 -*-
from __future__ import division  #除法
import sys
import codecs   #可以以特定编码打开文件
import jieba
import jieba.posseg as pseg
reload(sys)               #zzh说这种方法不好,不要再用了!!!  可是真的很好用啊 QAQ
sys.setdefaultencoding('utf-8')
import gensim

# model = gensim.models.Word2Vec.load("22620491.model")
model = gensim.models.KeyedVectors.load_word2vec_format('news_12g_baidubaike_20g_novel_90g_embedding_64.bin', binary=True)
word_vec = model.wv
del model     #把模型给word_vec,所以Model删掉。

print word_vec[u'难过']

f = codecs.open("xlj_fenci.txt",'r','utf-8')    #codecs包指定TXT打开方式
lines = f.readlines()
#doc = open('fenlei.txt', 'w')


right,wrong,total=0,0,0
cntl,cnta,cntn,cntj,cntw=0,0,0,0,0   #标注时每一类的数量
resl,resa,resn,resj,resw=0,0,0,0,0  #分类正确每一类结果数量
for line in lines: #每一行弹幕

    if lines.index(line) % 500 ==0:   #显示跑到多少条数据
        print lines.index(line)
    if line.split("  ")[0].split
### 使用Word2Vec进行相似度计算 #### 原理概述 Word2Vec是一种将词语转化为向量的形式化工具,其核心在于能够捕捉词与词之间的语义关系[^1]。它通过训练得到的高维向量空间表示词语,在这个空间中,可以通过几何距离衡量词语间的相似程度。常见的相似度计算方式是利用余弦相似度作为度量标准[^4]。 #### 实现方法 以下是基于Python和Gensim库实现Word2Vec相似度计算的具体过程: 1. **加载预训练模型** 如果已经存在一个预先训练好的Word2Vec模型文件(如`word2vec_model.bin`),可以直接加载该模型以便后续操作。 ```python from gensim.models import Word2Vec model = Word2Vec.load("word2vec_model.bin") ``` 2. **查找最相似的词** 利用`model.wv.most_similar()`函数可以找到某个给定词的最相近的一组词及其对应的相似分数。 ```python similar_words = model.wv.most_similar("电影", topn=5) print(similar_words) ``` 上述代码会打印出与“电影”这个词最为接近的五个词汇以及它们各自的相似分值[^3]。 3. **获取特定词的向量** 可以通过访问`model.wv[word]`来获得指定单词所对应于多维空间里的具体数值表现形式——即所谓的词嵌入(embedding),这通常表现为NumPy数组对象。 ```python vector_of_movie = model.wv["电影"] print(vector_of_movie.shape) # 输出形状 (维度大小,) ``` 4. **手动计算两词间相似度** 当需要比较任意两个同词语之间是否存在某种程度上的关联时,则可借助余弦公式自行完成这一任务: ```python import numpy as np def cosine_similarity(vec_a, vec_b): dot_product = np.dot(vec_a, vec_b) norm_a = np.linalg.norm(vec_a) norm_b = np.linalg.norm(vec_b) return dot_product / (norm_a * norm_b) word1_vec = model.wv['科技'] word2_vec = model.wv['创新'] similarity_score = cosine_similarity(word1_vec, word2_vec) print(f"Cosine Similarity between '科技' and '创新': {similarity_score}") ``` 上述脚本展示了如何运用基本线性代数概念去评估一对关键词项彼此靠近的程度。 --- ### 注意事项 - 在实际应用过程中,应当注意输入数据的质量问题;如果原始文本含有大量噪声干扰成分的话,那么最终产生的特征表达可能会偏离预期效果。 - 对于中文环境下的场景而言,还需要额外考虑分词环节的影响因素,因为未经适当分割处理过的句子可能无法被正确解析成独立单元供后续分析使用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值