使用已经学习的词嵌入从字符中学习单词嵌入



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

作为初始化,我想适应已经学习的单词嵌入(例如,谷歌的)。

我有一些疑问:

  1. 我是否需要为每个输入使用字符嵌入向量 输入序列中的字符?如果我使用 会不会有问题 只是 ASCII 或 UTF-8 编码?
  2. 尽管输入是什么 向量定义(嵌入 VEC、ASCII,..)真的很困惑 选择合适的模型有几个选项,但我不确定 哪一个是更好的选择:seq2seq,自动编码器,LSTM, 多回归器+LSTM ?
  3. 你能给我任何示例代码吗 Keras 还是 TensorFlow?

我回答每个问题:

  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

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

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

相关内容

  • 没有找到相关文章

最新更新