【发布时间】:2019-04-03 07:47:45
【问题描述】:
我正在使用语言模型 ELMo - https://allennlp.org/elmo 将我的文本数据表示为数字向量。该向量将用作简单情绪分析任务的训练数据。
在这种情况下,数据不是英文的,所以我从 - https://github.com/HIT-SCIR/ELMoForManyLangs 下载了一个自定义 ELMo 模型(我假设这个行为类似于官方的 allennlp repo)
要将文本文档转换为嵌入函数sents2elmo 的ELMo。如果我理解文档正确,则该参数是标记化句子的列表。
所以我的训练数据中的一个样本可以嵌入如下:
from elmoformanylangs import Embedder
embedder = Embedder('custom_language')
embeddings = embedder.sents2elmo([['hello', 'world', 'how', 'are', 'you', '?'],
['am', 'great', 'thanks', '!']])
这将返回一个由两个numpy数组组成的列表,每个句子一个,句子中的每个标记将表示为一个大小为1024的向量。由于sents2elmo(output_layer)的默认参数是-1,这个向量表示语言模型中 3 个内部层的平均值。
嵌入如何表示为一维数组?我应该对一个句子的所有词向量进行平均吗?然后平均所有的句子向量?
sentence_1 = np.mean(embeddings[0], axis=0)
sentence_2 = np.mean(embeddings[1], axis=0)
document = np.mean([sentence_1, sentence_2], axis=0)
这种方法会破坏任何信息吗?如果是这样,还有其他方法吗?
谢谢!
【问题讨论】:
标签: machine-learning nlp classification text-classification word-embedding