【问题标题】:Learning word-embeddings from characters using already learned word embedding使用已经学习的词嵌入从字符中学习词嵌入
【发布时间】:2018-02-04 18:36:52
【问题描述】:

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

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

我有一些疑问:

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

【问题讨论】:

    标签: tensorflow keras lstm autoencoder word-embedding


    【解决方案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

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

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

    【讨论】:

    • 嗨 Giuseppe,感谢您的回复,但我真的需要字符嵌入,或者换句话说,为什么在这种情况下我需要对字符相似性进行概括?
    猜你喜欢
    • 2019-10-13
    • 2019-10-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2018-10-08
    • 1970-01-01
    • 2011-09-25
    相关资源
    最近更新 更多