使用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')