使用中文维基百科进行GloVe实验

1. 环境及语料

1.1 环境

  • Python
  • GloVe

1.2 语料


  • 处理之后的中文Wiki

处理步骤参考我的这篇博客:使用中文维基百科进行Word2Vec实验。处理之后得到文件:corpus.zhwiki.segwithb.txt

2. 实验

2.1 GloVe

2.2 vocab_count


  • 命令:build/vocab_count -min-count 3 -verbose 2 < corpus.zhwiki.segwithb.txt > zhs_wiki_vocab

vocab_count从语料库(corpus.zhwiki.segwithb.txt是上面第一步处理好的语料库)中统计词频,输出文件 zhs_wiki_vocab,每行为词语 词频;-min-count 5指示词频低于5的词舍弃,-verbose 2控制屏幕打印信息的,设为0表示不输出

2.3 cooccur


  • 命令:build/cooccur -memory 4.0 -vocab-file zhs_wiki_vocab -verbose 2 -window-size 5 < corpus.zhwiki.segwithb.txt > zhs_wiki_cooccurence.bin

cooccur 从语料库中统计词共现,输出文件 zhs_wiki_cooccurence.bin,格式为非文本的二进制;-memory 4.0指示bigram_table缓冲器,-vocab-file指上一步得到的文件,-verbose 2同上,-window-size 5指示词窗口大小。

2.4 shuffle


  • 命令: build/shuffle -memory 4.0 -verbose 2 < zhs_wiki_cooccurence.bin > zhs_wiki_shuff.bin

shuffle 对 zhs_wiki_cooccurence.bin 重新整理,输出文件zhs_wiki_shuff.bin

2.5 Training


  • 命令:build/glove -save-file zhs_wiki_glove.vectors.300d.txt -threads 8 -input-file zhs_wiki_shuff.bin -vocab-file zhs_wiki_vocab -x-max 10 -iter 5 -vector-size 300 -binary 2 -verbose 2

glove 训练模型,输出词向量文件。-save-file 、-threads 、-input-file 和-vocab-file 直接按照字面应该就可以理解了,-iter 表示迭代次数,-vector-size 表示向量维度大小,-binary 控制输出格式0: save as text files; 1: save as binary; 2: both
可以根据自己的需求选择训词向量的维度,常选择100、200、300维

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
GloVe(Global Vectors for Word Representation)是一种基于全局词汇统计信息的词向量表示方法,它通过对语料库中的共现词频进行分析来计算单词的向量表示。GloVe是一种预训练词嵌入模型,可以用来将文本数据中的单词转换成向量表示,从而方便后续的机器学习任务。下面是使用GloVe模型的一些步骤: 1. 下载GloVe模型的预训练数据集,可以在GloVe官网上找到:https://nlp.stanford.edu/projects/glove/ 或者在其他网站上下载。 2. 加载预训练的GloVe模型。你可以使用Python中的NumPy库或者其他机器学习库来加载模型。以下是一个使用NumPy库加载模型的例子: ```python import numpy as np def load_glove_model(glove_file): with open(glove_file, 'r', encoding='utf-8') as f: word_to_vec = {} for line in f: line = line.strip().split() word = line[0] vec = np.array(line[1:], dtype=np.float) word_to_vec[word] = vec return word_to_vec glove_file = "glove.6B.50d.txt" word_to_vec = load_glove_model(glove_file) ``` 这个例子中,我们使用了50维的GloVe模型,加载了glove.6B.50d.txt文件,并将单词与它们的向量表示存储在了一个字典word_to_vec中。 3. 用GloVe模型将文本数据中的单词转换成向量表示。你可以使用以下代码将一个句子中的单词转换成向量表示: ```python def sentence_to_avg(sentence, word_to_vec): words = sentence.lower().split() avg = np.zeros((50,)) for word in words: avg += word_to_vec.get(word, np.zeros((50,))) avg /= len(words) return avg sentence = "i love natural language processing" avg = sentence_to_avg(sentence, word_to_vec) ``` 这个例子中,我们将一个句子中的单词转换成向量表示,并计算了它们的平均值。如果一个单词不在GloVe模型中,我们就将它的向量表示设为全零向量。 这些是使用GloVe模型的一些基本步骤,你可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值