【问题标题】:How to add OOV terms in a word embeddings model如何在词嵌入模型中添加 OOV 术语
【发布时间】:2019-09-01 21:43:05
【问题描述】:

我正在使用词嵌入模型(通过 Gensim 库的 FastText)来扩展搜索条件。 所以,基本上,如果用户写“操作系统”,我的目标是用“os”、“windows”、“ubuntu”、“software”等非常相似的术语来扩展这个术语。

该模型运行良好,但现在是使用“外部信息”改进模型的时候了,“外部信息”是指 OOV(词汇表外)术语或没有良好上下文的术语。

按照我上面写的示例,当用户编写操作系统时,我想用“一般”术语扩展查询:

FastText 模型中内置的术语:

  • 窗户
  • ubuntu
  • 软件

代表(组织/公司)的术语,例如“Microsoft”、“Apple”,因此完整的查询将是:

  • 术语:操作系统
  • 查询:操作系统、操作系统、软件、windows、ios、Microsoft、Apple

我的问题是我在语料库中没有公司,或者,如果存在的话,我不需要太多的上下文来将微软“链接”到“操作系统”。

例如,如果我在语料库中提取一个片段,我可以读到“......我已于 2000 年 11 月开始与我的朋友约翰在 Microsoft 工作......”所以,如您所见,我无法将“Microsoft”上下文化这个词,因为我确实没有很好的上下文。

一个小回顾:

  1. 我有一个语料库,其中公司(术语)的上下文很差
  2. 我有一个大型数据库,其中包含公司及其业务的描述。

我需要做什么:

我想将这些公司包含在我的 FastText 模型中,并“手动”设置他们的单词上下文/相关术语云。

想法?

【问题讨论】:

  • 你不能,首先你需要了解使用word embeddings word2vec或fast text library的目的,它是用来根据被包围的词的上下文找到词向量的。
  • @min2bro 我知道,但我也必须将公司放在上下文中......所以,我应该手动将它们添加到语料库中吗?然后再次训练模型?

标签: python machine-learning nlp gensim


【解决方案1】:

没有简单的方法可以做到这一点。 The FastText algorithm 使用字符级信息,因此它可以推断未见过单词的嵌入。这就是 FastText 论文所说的关于表示单词的内容:

但是,这仅在单词的情况下才有意义,您可以通过了解部分来推断它们的含义。例如,如果你有一个可靠的“walk”嵌入,但没有“walking”,并且有很多以“ing”结尾的单词,FastText 将能够推断嵌入。但这显然不适用于“Microsoft”之类的词。

您能做的最好的事情是在包含您希望模型使用的词的类型尽可能相似的数据上训练您的嵌入。如果你的文字是英文的,tt应该不会太难。

【讨论】:

    【解决方案2】:

    这些类型的模型需要大量不同的使用示例,以将令牌放置在相对良好的位置,与其他相关令牌保持有意义的距离/方向。如果你没有这样的例子,或者你的例子很少/很差,那么算法几乎没有什么帮助。

    如果您以某种方式知道,先验'microsoft' 应该出现在某些特定的向量坐标中,那么当然,您可以修补模型以包含该词->向量映射。 (不过,此类模型类通常包含用于此类增量添加的便捷方法,因为预期单词是从语料库中批量训练的,而不是单独指定的。)

    但是,如果您没有某些标记范围的示例文本,例如公司名称,那么您可能也不知道这些标记应该在哪里。

    确实,您需要找到足够的训练数据。然后,假设您希望这些新术语的向量位于“相同空间”并与您现有的词向量相当,将其与您先前的数据结合起来,并将所有数据一起训练成一个组合模型。 (此外,对于像 FastText 这样的算法,要为从未见过的 OOV 词合成合理的猜测向量,它需要大量具有重叠含义和重叠字符 n-gram 片段的词示例。)

    扩展您的语料库以获得更好的训练数据,例如 100 个目标组织名称,可能就像从可用来源(如 Wikipedia 或网络)中抓取句子/段落(包括这些名称)一样简单。

    通过在真实语言上下文中收集数十个(甚至更好成百上千个)组织名称的独立示例,并且因为这些上下文包含许多相互共享的其他词或其他相关组织的名称,您将能够为这些术语和相关术语引入合理的向量。

    【讨论】:

      猜你喜欢
      • 2018-06-09
      • 2012-06-17
      • 2017-09-21
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2018-09-04
      • 1970-01-01
      相关资源
      最近更新 更多