我已经在许多kaggle内核和教程中看到,平均单词嵌入被认为可以嵌入句子。但是,我想知道这是否是正确的方法,因为它会丢弃句子中单词的位置信息。有没有更好的方法来结合嵌入?也许以特定方式将它们分层组合?
答案 0 :(得分:1)
如果您需要一种简单但有效的方法,Sif embedding就是很好的选择。它平均句子中的单词向量,并删除其第一个主要成分。它比平均单词向量要好得多。该代码可在线here获得。这是主要部分:
svd = TruncatedSVD(n_components=1, random_state=rand_seed, n_iter=20)
svd.fit(all_vector_representation)
svd = svd.components_
XX2 = all_vector_representation - all_vector_representation.dot(svd.transpose()) * svd
all_vector_representation
是数据集中所有句子的平均嵌入。
还存在其他ELMO,Transformer等类似的复杂方法。