【问题标题】:spaCy similarity - Setting sense2vec or word2vec as defaultspaCy 相似性 - 将 sense2vec 或 word2vec 设置为默认值
【发布时间】:2018-01-24 09:51:54
【问题描述】:

我遇到了 spaCy 的一个博客 post,它介绍了 sense2vec 的想法,还有一个在线界面可以使用它的 most similar function,同时还有一个 online tool 可以使用 spaCy 带来的相似功能。

我只是不明白这些工具是基于 sense2vec 算法还是只是普通的预训练 word2vec 模型(我说的是大型英语模型)。

有没有办法定义我想使用哪个模型?

重点是

【问题讨论】:

    标签: nlp word2vec spacy sense2vec


    【解决方案1】:

    您可以通过关注these instructions in the docs 来加载自己的向量。使用该过程,您应该能够加载 sense2vec 向量。

    用于.similarity() 方法的模型是完整的 word2vec 模型或张量,具体取决于您使用的是大模型还是小模型。您链接到的sentence similarity tool 描述了这一点:

    默认情况下,spaCy 使用平均向量算法,如果可用,则使用预训练的向量(例如 en_core_web_lg 模型)。如果不是,则使用由标注器、解析器和实体识别器生成的 doc.tensor 属性。这就是 en_core_web_sm 模型提供相似之处的方式。通常基于 .tensor 的相似性会更具结构性,而词向量相似性会更具话题性。您还可以自定义 .similarity() 方法,以提供您自己的相似度函数,可以使用监督技术进行训练。

    【讨论】:

    • 我知道如何阅读他们的纪录片,并在询问之前做到了。你没有回答我的问题,我的问题是——如果现在我为给定的句子加载一个向量,这个向量是从简单的 word2vec/glove 模型还是从 sense2vec 模型加载的?为了使用 sense2vec,我是否应该手动将 POS 标签添加到每个标记,而不是使用模型进行转换或按原样进行转换,它会给出正确的 sense2vec 向量?
    • 一个句子的向量,默认情况下,将是该句子中单词的默认 Glove 向量的平均值。每个令牌在解析时已经有一个 POS 归属于它,因此您不必这样做。您可以使用这个事实和vocab.set_vector() 来使用 sense2vec 向量。 (见这里:spacy.io/usage/vectors-similarity#custom-vectors-add
    • 我看到了这个链接,但仍然不明白如何获得 sense2vec 向量。我不想训练新的向量,但希望每个向量都基于上下文(word2vec/Glove),但也将包含 POS 标签/NER 标签,以便区分,例如,Apple(水果)和 Apple(该公司),我如何获得这样的向量?还是仅作为在线演示提供?
    • 我的理解是,您必须仔细检查您正在使用的词汇表,并手动将 sense2vec 中的向量分配给每个标记。我不确定最好的方法,但理论上是可能的。没有简单的解决方案只是告诉 spacy 使用 sense2vec 而不是 GloVe。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2010-10-16
    • 2019-04-26
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多