我使用word2vec作为单词表示,在tweet上进行情感分析。
我已经训练了我的word2vec模型。但是当我要训练分类器时,我面临的问题是,每条推文都有不同的长度,分类器(RandomForest)需要所有的例子都是相同大小的。
目前,对于每一条推文,我平均了它所有单词的向量,最后得到了tweet的向量表示。
例如:我的word2vec模型将每个单词表示为大小为300的向量。
我的Tweet1由10个单词组成,Tweet2由5个单词组成。
所以我要做的是,对于Tweet1
(v1_Tweet1 + v2_Tweet1 + ... +v10_Tweet1)/10 = v_Tweet1 #avg vector of 300 elements.对于Tweet2:
(v1_Tweet2 + v2_Tweet2 + ... +v5_Tweet1)/5 = v_Tweet2 #avg vector of 300 elements.* v1_TweetX是TweetX第一个单词的向量,依此类推。
这很好,但我想知道你还有什么其他的方法来克服火车上的不同尺寸和分类器的文本示例。
谢谢。
发布于 2017-03-03 21:28:24
让我提出三个简单的选择:
每个特征向量都与文本的长度无关。
有研究表明,将最大值和最小值串联在一起会产生一个非常有效的特征空间:它不是绝对最优,但接近最优,而且简单且易于实现。详情请参见关于Statistics.SE的这个问题。
这里有一个由库伯恩的回答启发的替代想法,据我所知,这个想法以前还没有被测试过。其思想是使用词性标注器对文本进行标记,然后使用这些标记通知特征化过程。
特别是,写下POS标签可能发出的所有可能的POS标记的列表。假设有20个可能的标签(CC,DT,JJS,MD,NNP,.)。然后特征向量将是20*300 = 6000元素长:它将有一个300向量每个POS标签,串联在一定的规范顺序。每个标签的300个向量可以通过平均由POS标记者用该标记标记的所有单词的单词嵌入向量来计算。或者,你可以得到一个600矢量每个POS标签,通过计算的最小和最大的所有向量的文字与该标签。
这可能会产生一个更丰富的特性空间,我不知道它是否会带来任何改进,但如果您想尝试不同的想法,您可以尝试。
发布于 2016-08-04 20:12:59
这里有两个非常不同的建议,以避免将向量平均化:
发布于 2016-08-01 10:11:48
与其为tweet平均和获取单个向量,您还可以为每个单词和不同长度的向量大小获取向量,填充可以用零来完成。
https://datascience.stackexchange.com/questions/13120
复制相似问题