当前位置:   article > 正文

千言数据集:文本相似度—— 训练中文词向量_中文词向量数据集

中文词向量数据集

以下学习笔记来源于 Coggle 30 Days of ML(22年1&2月)
链接:https://coggle.club/blog/30days-of-ml-202201

比赛链接:https://aistudio.baidu.com/aistudio/competition/detail/45/0/task-definition

加载数据集,训练中文词向量

导入所需库

import pandas as pd
import jieba
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
  • 1
  • 2
  • 3
  • 4

读取数据集

#读取tsv文件的方法
def read_tsv(input_file,columns):
    with open(input_file,"r",encoding="utf-8") as file:
        lines = []
        count = 1
        for line in file:
            if len(line.strip().split("\t")) != 1:
                lines.append([count]+line.strip().split("\t"))
                count += 1
        df = pd.DataFrame(lines)
        df.columns = columns
    return df

bq_train=read_tsv('./bq_corpus/train.tsv',['index','text1','text2','label'])
lcqmc_train=read_tsv('./lcqmc/train.tsv',['index','text1','text2','label'])
pawsx_train=read_tsv('./paws-x-zh/train.tsv',['index','text1','text2','label'])

bq_test=read_tsv('./bq_corpus/test.tsv',['index','text1','text2'])
lcqmc_test=read_tsv('./lcqmc/test.tsv',['index','text1','text2'])
pawsx_test=read_tsv('./paws-x-zh/test.tsv',['index','text1','text2'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

构建训练语料

Word2Vec第一个参数sentences要求是是预处理后的训练语料库,需要输入一个可迭代的列表,如果是句子,需要进行分词,如果为文件需要将文件处理为每一行对应一个已经分词,以空格隔开的句子。然后可以使用gensim.models.word2vec.LineSentence把txt文件转为所需要的格式。这里我们采用第二中方法,将简单处理后的语料保存到文件,若之后任务需要的话方便直接读取。

df_train=pd.concat([bq_train,lcqmc_train,pawsx_train])
df_test=pd.concat([bq_test,lcqmc_test,pawsx_test])
corpus=df_train['text1'].values.tolist()+df_train['text2'].values.tolist()
tokenized_corpus=[' '.join(jieba.lcut(text)) for text in corpus]
f = open('./word2vec_data/corpus.txt', 'w',encoding='utf-8')
for i in tokenized_corpus:
    f.write(i + '\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

保存后的 corpus.txt文件:
请添加图片描述

训练中文词向量

def train_word2vec():
    corpus=open('./word2vec_data/corpus.txt', 'r',encoding='utf-8')
    model = Word2Vec(LineSentence(corpus), sg=0,vector_size=100, 
                     window=5, min_count=5, workers=9)
    model.save('./word2vec_data/text_similarity.word2vec')

train_word2vec()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

加载训练的模型并简单使用

示例:计算词语之间的相似度

model=Word2Vec.load('./word2vec_data/text_similarity.word2vec')
print(model.wv.similarity('贷款','借款'))
print(model.wv.similarity('交易','准备'))
  • 1
  • 2
  • 3

请添加图片描述
查看维数:
请添加图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/379953
推荐阅读
相关标签
  

闽ICP备14008679号