使用word2vec训练词向量

使用gensim进行训练

手上的数据集:一共7类,共13,000多个文件,每个文件可以看做一句话,如何训练词向量?方法一:全部文件一起加载训练,一共为13,000多句话;方法二:每类训练,每类训练出一个对应向量、

使用gensim可以训练。首先遍历每个文件,每个文件中只有一行数据,数据可以看做一句话,用逗号分开。依次读取每一句话,使用空格替换逗号,然后存储到字典中,转换成pandas的DataFrame格式,保存到文件中。

import os
import pandas as pd

datas = {'label':[], 'text':[]}
for i in range(0,8):
    for file in os.listdir('{}/'.format(i)):
        data = open('{}/{}'.format(i, file), 'r')
        data = list(data)[0].replace(',', ' ')[:-2]

        datas['label'].append(i)
        datas['text'].append(data)

datas = pd.DataFrame(datas)
datas.to_csv('data.csv')

随后便可以开始训练了。从文件中使用pandas再读取出数据格式,只提取text的部分,然后查找gensim的输入格式是列表中包含列表的:

[['human', 'interface', 'computer'],
 ['survey', 'user', 'computer', 'system', 'response', 'time'],
 ['eps', 'user', 'interface', 'system'],
 ['system', 'human', 'system', 'eps'],
 ['user', 'response', 'time'],
 ['trees'],
 ['graph', 'trees'],
 ['graph', 'minors', 'trees'],
 ['graph', 'minors', 'survey']]

于是按照这样的格式,把数据输入到word2vec中进行训练,长度默认为100维

import pandas as pd
from gensim.models import Word2Vec

data = pd.read_csv('data.csv')['text']

text = []
for i in data:
    text.append(str(i).split(' '))

model = Word2Vec(text)
model.save('vector.model')

你可能感兴趣的:(使用word2vec训练词向量)