来自Keras的lm_1b的字符嵌入

时间:2017-05-31 01:19:50

标签: machine-learning nlp keras language-model word-embedding

我想在Keras NN模型中使用一些经过预先训练的单词嵌入,这些模型已由Google在very well known article中发布。他们提供了训练新模型的代码,以及嵌入here

然而,从文档中不清楚如何从简单的python函数调用中从给定的字符串(word)中检索嵌入向量。许多文档似乎都集中在将矢量转储到文件中,因为整个句子可能用于情感分析。

到目前为止,我已经看到您可以使用以下语法提供预训练嵌入:

embedding_layer = Embedding(number_of_words??,
                            out_dim=128??,
                            weights=[pre_trained_matrix_here],
                            input_length=60??,
                            trainable=False)

但是,将不同的文件及其结构转换为pre_trained_matrix_here对我来说并不十分清楚。

他们有几个softmax输出,所以我不确定哪一个属于 - 以及如何将输入中的单词与他们所拥有的单词词典对齐。

是否有简单的方法在keras中使用这些word / char嵌入和/或在keras中构建模型的字符/单词嵌入部分,以便可以为其他NLP任务添加更多层?

2 个答案:

答案 0 :(得分:0)

对于与单词或文本编码相关的NLP应用程序,我将使用CountVectorizer或TfidfVectorizer。在下面的参考中,对Python进行了简短的声明和描述:http://www.bogotobogo.com/python/scikit-learn/files/Python_Machine_Learning_Sebastian_Raschka.pdf

CounterVectorizer可以简单地用作SPAM-HAM检测器,而TfidfVectorizer可以更深入地了解每个术语(单词)在文档中的出现频率以及出现此结果的文档数量之间的相关性以一种有趣的方式衡量这些术语的区别。文本特征提取器可能会考虑停用词和词形化以增强特征表示。

答案 1 :(得分:0)

Embedding层仅拾取输入单词的整数索引的嵌入(权重矩阵的列),它对字符串一无所知。这意味着您需要首先使用与嵌入模型相同的词汇,将输入的单词序列转换为索引序列。