【问题标题】:How to initialize word-embeddings for Out of Vocabulary Word?如何为 Out of Vocabulary Word 初始化词嵌入?
【发布时间】:2018-07-01 21:50:15
【问题描述】:

我正在尝试使用 CoNLL-2003 NER(英语)数据集,并且我正在尝试为其使用预训练嵌入。我正在使用 SENNA 预训练嵌入。现在,我的词汇表中有大约 20k 个单词,而其中只有 9.5k 个单词的嵌入可用。
我目前的方法是用零初始化一个 20k X embedding_size 数组,并初始化我知道其嵌入的 9.5k 个单词,并使所有嵌入都可以学习。

我的问题是最好的方法是什么?对此类研究的任何参考都会非常有帮助吗?

【问题讨论】:

    标签: machine-learning nlp deep-learning word-embedding


    【解决方案1】:

    上面的好建议可能适用于大多数应用程序。如果您想获得花哨的和最先进的,那么您可以训练一个模型来预测未知的词嵌入。看看最近的 EMNLP 2017 论文:https://arxiv.org/pdf/1707.06961.pdf

    TL;DR 给定一组已知的词嵌入,其想法是训练一个字符级 BiLSTM,它试图仅根据单词的字符来预测嵌入。然后这个网络可以泛化来预测未知单词的嵌入。理想情况下,网络会捕获一些形态信息,例如apples 的预测嵌入将接近 apple,并且论文中的评估似乎支持这一假设。

    这里有一个带有预训练模型的 GitHub 存储库:https://github.com/yuvalpinter/mimick

    【讨论】:

      【解决方案2】:

      我会建议三种方法来解决这个问题,每种方法都有不同的优势:

      • 尝试使用 FastText 嵌入,而不是使用 SENNA 嵌入。这里的优点是他们可以使用字符 n-gram 推断 OOV 词的嵌入。有关使用的确切方法,请查看相关论文。 Gensim 已经实现了所有需要的功能。这将大大减少问题,并且您可以按照您的描述进一步微调诱导嵌入。不便之处在于您必须从 Senna 更改为 FastText。
      • 尝试使用形态或语义相似性来初始化 OOV 词。对于形态学,我的意思是使用像 Levenshtein 这样的距离来选择嵌入。对于像apple 这样的OOV 词,选择最接近(根据Levenshtein 距离)嵌入的词,例如apples。根据我的经验,这可以很好地工作。另一方面,语义相似性建议使用例如同义词,从诸如 WordNet 之类的资源中获得,甚至对 OOV 经常同时出现的词的嵌入进行平均。
      • 使用上述方法降低稀疏性后,继续进行其他响应中讨论的随机初始化。

      【讨论】:

      • 我浏览了 Fasttext 论文,它提供了一种几乎无限词汇的方法,这使得您建议的方法最适合。我正在运行我的实验。很快就会公布我的结果。
      • 我们可以在 GPU 上训练 FastText 吗?我有庞大的语料库,完成培训可能需要几个月的时间。有什么方法可以加快 fasttext 训练?
      【解决方案3】:

      您的方法听起来不错,如果您可以为这些词汇外的单词训练任何有意义的嵌入,这可能会很棘手,因为它们很少见。如果你不能,它们的嵌入不会比随机嵌入好多少。

      在实践中,所有词汇表外的单词通常都转换为<UNK>,并且都得到简单的零嵌入。在这种情况下,您不需要将所有这些零存储在嵌入矩阵中,而是进行智能查找,如果索引在词汇表中,则选择嵌入向量,否则选择零。如果您使用的是 tensorflow,那正是 tf.nn.embedding_lookup 所做的。所以嵌入矩阵会更小(10k x embedding_size),训练会更快。

      我不确定是否有很多OOV单词的研究,但作为参考我可以提及Google's Neural Machine Translation system

      鉴于词的分类性质,模型必须首先查找 源嵌入和目标嵌入以检索相应的单词 申述。为了使这个嵌入层工作,一个词汇表是 首先为每种语言选择。通常,词汇量 V 为 被选中,并且只有最频繁的 V 词被视为唯一的。 所有其他单词都被转换为“未知”标记,并且都得到 相同的嵌入。嵌入权重,每种语言一组,是 通常在训练中学习。

      【讨论】:

      • 我已经使用了这种方法,它似乎对我不起作用,因为我正在尝试改进我的 NER 系统。众所周知,NER 系统已经存在 OOV 单词问题,减少起始词汇似乎会使情况变得更糟。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 2019-12-26
      相关资源
      最近更新 更多