Gensim构造词向量模型

1、下载维基百科data

https://dumps.wikimedia.org/zhwiki/20190820/
zhwiki-20190820-pages-articles.xml.bz2
也可以下下面的小的
在这里插入图片描述

2、将bz2内容提取出来

确保安装了gensim pip install gensim

#!/usr/bin/env python
# -*- coding: utf-8  -*-
#将xml的wiki数据转换为text格式

import logging
import os.path
import sys

from gensim.corpora import WikiCorpus

if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])#得到文件名
    logger = logging.getLogger(program)

    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    if len(sys.argv) < 3:
        #print globals()['__doc__'] % locals()
        sys.exit(1)

    inp, outp = sys.argv[1:3]
   
### 使用 Jieba 分词和 Word2Vec 模型进行中文词向量提取 为了有效地利用 `gensim` 库中的 `Word2Vec` 对中文文本进行词向量训练,首先需要解决中文文本的分词问题。由于中文句子由连续的汉字构成而无天然的词边界,因此在训练之前需采用合适的工具对文本进行分词处理[^3]。 #### 安装所需库 确保安装了必要的 Python 库,包括用于分词的 `jieba` 和用于训练模型的 `gensim`: ```bash pip install jieba gensim ``` #### 数据预处理——分词 使用 `jieba` 进行中文文本的分词操作如下所示: ```python import jieba def preprocess(text): """对输入文本执行简单的预处理并返回分词后的列表""" words = jieba.lcut(text) # 利用结巴分词将字符串切割成词语列表 return [word for word in words if word.strip()] # 去除空白字符项 ``` #### 构建与训练 Word2Vec 模型 准备好经过分词的数据之后,就可以创建 `Word2Vec` 实例来进行训练。这里定义了一个函数来展示如何加载数据、初始化以及配置模型参数[^5]。 ```python from gensim.models import Word2Vec sentences = ["我爱北京天安门", "今天天气真好"] # 示例短句集合 tokenized_sentences = [preprocess(sentence) for sentence in sentences] model = Word2Vec( tokenized_sentences, vector_size=100, # 设置词向量维度为100维 window=5, # 上下文窗口大小设为5 min_count=1, # 忽略总频率低于此值的所有单词 workers=4, # 并行化设置线程数量 sg=1 # 使用skip-gram算法;sg=0则代表CBOW模式 ) # 训练完成后可以选择保存模型以便后续调用 model.save("my_word2vec_model.model") ``` 通过以上代码片段可以看出,先是对原始语料进行了分词处理得到一系列词汇序列,再以此作为输入传递给 `Word2Vec` 类构造器,并指定了若干重要超参如 `vector_size`, `window`, `min_count` 及 `sg` 的具体数值。 #### 查询词向量及其相似性 一旦完成了模型训练,便可以通过访问特定词条对应的嵌入向量或查询相近义词等方式检验成果。下面给出了一些基本的操作示范: ```python print(model.wv['北京']) # 输出'北京'这个词的向量表示形式 print(model.wv.most_similar('北京')) # 查找与‘北京’最相似的一些词及它们间的余弦距离得分 print(model.wv.similarity('中国', '美国')) # 测算两国家名称间的关系强度 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值