1

我有一个文本语料库,我想找到从字符开始的单词的嵌入。所以我有一个字符序列作为输入,我想将它投影到一个多维空间中。

作为初始化,我想拟合已经学过的词嵌入(例如,谷歌的词嵌入)。

我有些疑惑:

  1. 我是否需要为输入序列中的每个输入字符使用字符嵌入向量?如果我只使用 ascii 或 utf-8 编码会不会有问题?
  2. 尽管输入向量定义是什么(嵌入 vec、ascii、..),但选择合适的模型确实令人困惑,但我不确定哪个是更好的选择:seq2seq、自动编码器、lstm、多回归器+lstm ?
  3. 你能给我 keras 或 tensorflow 的任何示例代码吗?
4

1 回答 1

1

我回答每个问题:

  1. 如果你想利用字符相似性(也就是语音相似性的远亲),你需要一个嵌入层。编码是符号输入,而嵌入是连续输入。使用符号知识,任何类型的泛化都是不可能的,因为您没有距离(或相似性)的概念,而使用嵌入,您可以在相似的输入下表现出相似的行为(因此泛化)。然而,由于输入空间非常小,短嵌入就足够了。

  2. 该模型高度依赖于您想要捕捉的现象类型。我经常在文献中看到并且似乎在不同任务中运行良好的模型是在字符上的多层双向 LSTM,顶部有一个线性层。

  3. 代码类似于 Tensorflow 的所有 RNN 实现。一个好的开始方法是 Tensorflow 教程https://www.tensorflow.org/tutorials/recurrent。创建双向的函数是https://www.tensorflow.org/api_docs/python/tf/nn/static_bidirectional_rnn

根据经验,我在使用字符模型拟合基于词的词嵌入时遇到了问题。原因是如果没有语义相似性,基于词的模型会将形态相似的词放在很远的地方。基于字符的模型无法做到这一点,因为无法很好地区分形态相似的输入(在嵌入空间中非常接近)。

这就是为什么在文学作品中人们经常使用字符模型作为词模型而不是“本身”模型的原因之一。如果字符模型足以捕获语义和形态相似性,那么这是一个开放的研究领域。

于 2017-08-27T12:30:35.780 回答