Nlp doc2vec是否可以处理每个类只有一个样本的多类问题?

Nlp doc2vec是否可以处理每个类只有一个样本的多类问题?,nlp,gensim,doc2vec,Nlp,Gensim,Doc2vec,我有一个测试句子(定义一项技能,如“执行设备维护”)和一套文凭(10000种不同的文凭),其中描述了所需的技能(=每个文凭1段)。我的问题在于从语义相似性的角度寻找最接近测试句子的文凭 我考虑创建一个doc2vec模型(多类,每个文凭一类),以便在特征向量中转换每个文凭,然后推断测试句子的向量,并计算每个特征向量的余弦相似性。然而,我每个文凭只有一个样本。它还能用吗? 或者,为了获得一张文凭的多个样本,我必须拆分每个文凭文本的句子吗?请注意,“每种文凭类型一个描述性段落”的数据集通常不会被描述为

我有一个测试句子(定义一项技能,如“执行设备维护”)和一套文凭(10000种不同的文凭),其中描述了所需的技能(=每个文凭1段)。我的问题在于从语义相似性的角度寻找最接近测试句子的文凭

我考虑创建一个doc2vec模型(多类,每个文凭一类),以便在特征向量中转换每个文凭,然后推断测试句子的向量,并计算每个特征向量的余弦相似性。然而,我每个文凭只有一个样本。它还能用吗? 或者,为了获得一张文凭的多个样本,我必须拆分每个文凭文本的句子吗?

请注意,“每种文凭类型一个描述性段落”的数据集通常不会被描述为“多类”问题。术语“多类别”通常描述每个项目本身应用了多个类别/标签的情况

但是,您所描述的方法可能是有成效的,要知道哪种方法更适合您的数据和目标,唯一的方法是相互评估它们(以及其他变体)

具体而言:

正如您所描述的,您可以在10000个简短文档上训练一个
Doc2Vec
模型,每个文档描述一个不同的文凭。(这对于
Doc2Vec
培训数据来说是小巫见大巫,但也许已经足够了。使用更小的文档向量大小–比如100维或更少–和/或更多的培训
epochs
有时可以帮助从更小的数据集中挤出更好的结果。)现在,您将拥有10000个文档向量,每个文档/文凭一个

然后,对于任何新的测试文档–您的技能句子–您将计算另一个文档向量。您可以使用
gensim
Doc2Vec
推断向量()
方法来完成此操作。(请注意,特别是对于短文本,您可能希望使用远远超过默认数量的
epoch
进行此计算。)

然后,您将搜索前10000个文档向量中与新向量最接近的模型,您可能会发现最接近的匹配项,或前N个最接近项中的一个,非常适合您的需要

但是,还有一些其他变体需要考虑:

  • 如果事实上,你的文凭描述都是多句话——比如说几十个甚至几百个单词——而你的技能句子比较短——比如说几个到十几个或两个单词——那么与你的测试句子最匹配的可能就是长段落的一个子集。在这种情况下,最初在较小的文本片段上训练模型可能会有所帮助。例如,如果文凭文档各有5个句子,那么您可以训练模型了解50000个单独的文档向量。测试一个技能句子就是找到前N个最接近的匹配项,然后查找附近的描述句子是关于哪个文凭的

  • 如果您的技能句子很多,并且在培训时也可以使用,那么您也可以在模型培训中使用它们。例如,也许除了你的10000个文凭描述之外,你还有20000个技能句子。您可以让初始模型学习30000个文档向量。然后,您可以查找最接近技能文档向量的文凭文档向量,而无需使用
    推断向量()。(您仍然可以选择在出现的任何新文本上使用
    推断向量()
    ,但在初始培训中包含更多文本可能会使整个模型更具表达力。)

  • 与其简单地将任何探测技能句子映射到
    Doc2Vec
    -坐标空间中最接近的单个文凭段落,不如使用第二步监督分类器算法,如果您已经有许多经过人工审查的示例,说明哪些技能句子应与哪些文凭段落相关联。也就是说,您只需使用
    Doc2Vec
    为文本创建特征向量,但通过另一个培训过程学习文本的“标签”(文凭类型)。有许多潜在的分类器算法,它们需要大量的数据,但如果有足够的数据,一些算法可能有更好的机会学习基础数据中的不规则形状,例如,某个文凭标签根据历史示例,应该比简单的文本向量距离所表示的“更多”技能空间