词向量迁移
- 什么是词向量迁移
- fastText中有哪些可以迁移的词向量模型
- 掌握如何使用fasttext进行词向量迁移
1、什么是词向量?
使用在大型语料库上已经训练好的词向量。
2、fasttext里面可以提供迁移的词向量:
fasttext提供了157种语言的在CommonCrawl和Wikipedia语料上进行训练的可迁移词向量模型, 它们采用CBOW模式进行训练, 词向量维度为300维.
可通过该地址查看具体语言词向量模型:
https://fasttext.cc/docs/en/crawl-vectors.html
fasttext提供了294种语言的在Wikipedia语料上进行训练的可迁移词向量模型, 它们采用skipgram模式进行训练, 词向量维度同样是300维.
https://fasttext.cc/docs/en/pretrained-vectors.html
3、如何进行词向量的迁移
- 第一步: 下载词向量模型压缩的bin.gz文件
- 第二步: 解压bin.gz文件到bin文件
- 第三步: 加载bin文件获取词向量
- 第四步: 利用邻近词进行效果检验
第一步下载词向量模型的bin.gz的压缩文件
# 这里我们以迁移在CommonCrawl和Wikipedia语料上进行训练的中文词向量模型为例:
# 下载中文词向量模型(bin.gz文件)
wget https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.zh.300.bin.gz
第二步:解压bin.gz文件到bin
# 使用gunzip进行解压, 获取cc.zh.300.bin文件
gunzip cc.zh.300.bin.gz
第三步加载bin文件
def fast_text_model():
"""
从fastext官网下载的中文词向量,来测试一下中文的相似度情况
:return:
"""
wiki_chinese = fasttext.load_model(r"D:\Downloads\cc.zh.300.bin\cc.zh.300.bin")
print(wiki_chinese.words[:100])
# 利用邻近词检查
res1 = wiki_chinese.get_nearest_neighbors("音乐")
for val in res1:
print("邻近词语: ", val)
[',', '的', '。', '</s>', '、', '是', '一', '在', ':', '了', '(', ')', "'", '和', '不', '有', '我', ',', ')', '(', '“', '”', '也', '人', '个', ':', '中', '.', '就', '他', '》', '《', '-', '你', '都', '上', '大', '!', '这', '为', '多', '与', '章', '「', '到', '」', '要', '?', '被', '而', '能', '等', '可以', '年', ';', '|', '以', '及', '之', '公司', '对', '中国', '很', '会', '小', '但', '我们', '最', '更', '/', '1', '三', '新', '自己', '可', '2', '或', '次', '好', '将', '第', '种', '她', '…', '3', '地', '對', '用', '工作', '下', '后', '由', '两', '使用', '还', '又', '您', '?', '其', '已']
邻近词语: (0.6703276634216309, '乐曲')
邻近词语: (0.6569967269897461, '音乐人')
邻近词语: (0.6565821170806885, '声乐')
邻近词语: (0.6557438373565674, '轻音乐')
邻近词语: (0.6536258459091187, '音乐家')
邻近词语: (0.6502416133880615, '配乐')
邻近词语: (0.6501686573028564, '艺术')
邻近词语: (0.6437276005744934, '音乐会')
邻近词语: (0.639589250087738, '原声')
邻近词语: (0.6368917226791382, '音响')
将加载的中文词向量测试,可以看到词语的相似度。后续在NLP的相关任务中是可以直接使用fasttext的预训练词向量模型。