word2vec提取特征向量

#!/usr/bin/env python
# -*- coding: utf-8  -*-
# 从词向量模型中提取文本特征向量
import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')  # 忽略警告
import numpy as np
import pandas as pd
from gensim.models import word2vec

# 返回特征词向量
def getWordVecs(wordList, model):
    vecs = []
    for word in wordList:
        word = word.replace('\n', '')
        # print word
        try:
            vecs.append(model[word])
        except KeyError:
            continue
    return np.array(vecs, dtype='float')  # 返回一个二维numpy数组

# 构建文档词向量
def buildVecs(filename, model):
    fileVecs = []
    contents = pd.read_table(filename, header=None, index_col=None)
    for line in contents[0]:
        wordList = line.split(' ')
        vecs = getWordVecs(wordList, model)
        if len(vecs) > 0:
            vecsArray = sum(np.array(vecs)) / len(vecs)  # mean    等价于np.average(vecs)
            fileVecs.append(vecsArray)
    return fileVecs

if __name__ == '__main__':
    #加载word2vec模型
    model = word2vec.Word2Vec.load(r'F:\t\test\wiki_corpus.model')

    posInput = buildVecs(r'F:\t\test\pos_jieba.csv', model)
    negInput = buildVecs(r'F:\t\test\neg_jieba.csv', model)

    # use 1 for positive sentiment, 0 for negative
    Y = np.concatenate((np.ones(len(posInput)), np.zeros(len(negInput))))

    X = posInput[:]
    for neg in negInput:
        X.append(neg)
    X = np.array(X)

    # write in file
    df_x = pd.DataFrame(X)
    df_y = pd.DataFrame(Y)
    data = pd.concat([df_y, df_x], axis=1)
    # print data
    data.to_csv(r'F:\t\test\2000_data.csv')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容