预训练矢量,nlp,word2vec,针对特定主题的单词嵌入?

时间:2020-04-05 19:09:27

标签: java python nlp word2vec glove

是否只有针对特定主题的预训练向量?例如“ java”,所以我要在文件中找到与向量相关的java。意思是,如果我给出输入继承,则余弦相似度仅显示多态性和其他相关信息! 我使用语料库作为GoogleNews-vectors-negative300.bin和Glove载体。仍然没有得到相关的单词。

2 个答案:

答案 0 :(得分:0)

不确定我是否理解您的问题/问题陈述,但是如果您想使用Java源代码库,则可以使用 code2vec ,它提供了预训练的单词嵌入模型。签出:https://code2vec.org/

答案 1 :(得分:0)

是的,您有时可以找到其他组的经过预先训练的向量以供下载,这些向量可以更好地覆盖他们所训练的任何问题领域:更加专业的词,以及与词义相匹配的词向量域。

例如,GoogleNews单词向量在大约2012年的新闻报道中受到训练,因此'Java'的向量是由Java岛的故事主导的,与编程语言一样。还有许多其他向量集都在Wikipedia文本上进行了训练,这些文本集将以该特定参考风格的用法为主导。但是可能还有其他集合可以更好地强调您所需要的词义。

但是,最好的方法通常是从与您关注的主题/文档非常匹配的训练语料库中训练自己的单词向量。然后,将单词向量调整到您所关注的领域。只要您有足够多的上下文中使用的单词示例,所得矢量可能会比其他人的语料库中的通用矢量更好。 (“足够”没有明确的定义,但是通常至少有5种,理想情况下是数十种到数百种具有代表性的多种用途。)

让我们考虑一下您的示例目标-在“多态性”和“输入继承”的概念之间显示出一些相似之处。为此,您需要一个训练语料库,最好是在许多问题背景下,从许多作者那里多次讨论这些概念。 (可能是课本,在线文章和“堆栈溢出”页面的来源。)

您还需要一种令牌化策略,该策略可以为两个单词的概念'input_inheritance'创建一个单词令牌-这是一个单独的挑战,可以通过(1)手工制作来解决应合并的多词短语词汇表; (2)对似乎经常出现的单词对进行统计分析,应将它们组合在一起; (3)更复杂的语法感知短语和实体检测预处理。

GoogleNews集中的多字词组是通过统计算法创建的,该统计算法也可以在gensim Python库中作为Phrases类使用。但是,Google使用的确切参数据我所知,这个算法的好结果可能需要大量数据和调整,并且仍然会导致人们认为无聊和遗漏的某些组合。其他人认为自然的东西。)

相关问题