LSTM如何将字符嵌入矢量转换为用于句子分类的句子矢量?

时间:2019-02-27 11:54:18

标签: python tensorflow keras lstm

我想使用字符嵌入为句子分类建立LSTM模型。

我知道如何使用单词嵌入来实现,其中模型可以从单词索引中学习嵌入,但是不确定如何使用字符嵌入来实现。

用于单词嵌入:

sentence_list = ['this is a dog', 'the cat and the mouse']
label = [1,0]
word_dict = {'this':1,
             'is':2,
             'a':3,
             'dog':4,
             'the':5,
             'cat':6,
             'and':7,
             'mouse':8}

# set vector length = 9
vectors = [[1,2,3,4,0,0,0,0,0]
              [0,0,0,0,5,6,7,5,8]]
model.fit(vectors,label)

因此可以随时将其安装到LSTM模型中。

对于基于字符的矢量我们该怎么做?

例如: 如果我有这个汉字字典:

 char_dict = {'t':1,
             'h':2,
             'i':3,
             's':4,
             'a':5,
             'd':6,
             'o':7,
             'g':8}

我该如何格式化LSTM分类模型以使其易于阅读? 更具体地说,我们如何组合多个字符向量以馈入LSTM模型?

1 个答案:

答案 0 :(得分:1)

完全相同。完全没有区别。

将句子转换为索引向量并拟合。

重要的事情

不要用0开头的句子,您的vectors应该是:

vectors = [[1,2,3,4,0,0,0,0,0]
          [5,6,7,5,8,0,0,0,0]]

具有空格(至少)和标点符号:

 char_dict = {'t':1,
         'h':2,
         'i':3,
         's':4,
         'a':5,
         'd':6,
         'o':7,
         'g':8
         ' ':9,
         '.':10,
         'c':11}

sentences = ['this is a dog', 'that is a cat.']
vectors = [
              [char_dict[ch] for ch in sentence] for sentence in sentences
          ]

vectors = [
              [1, 2, 3, 4, 9, 3, 4, 9, 5,  9, 6, 7,  8],
              [1, 2, 5, 1, 9, 3, 4, 9, 5, 11, 5, 1, 10]
          ]