【问题标题】:How to interpret output from gensim's Word2vec most similar method and understand how it's coming up with the output values如何解释 gensim 的 Word2vec 最相似方法的输出并了解它是如何得出输出值的
【发布时间】:2023-09-30 15:35:01
【问题描述】:

我正在尝试在一个问题上实现 word2vec。我将简要解释我的问题陈述:

我正在处理临床数据。我想根据一组症状预测前 N 种疾病。

Patient1: ['fever', 'loss of appetite', 'cold', '#flu#']
Patient2: ['hair loss', 'blood pressure', '#thyroid']
Patient3: ['hair loss', 'blood pressure', '#flu]
..
..
Patient30000: ['vomiting', 'nausea', '#diarrohea']

注意: 1.带有#prefix的单词是诊断,其余是症状

  1. 我的语料库没有任何句子或段落。它仅包含患者的症状名称和诊断

在这个语料库上应用 word2vec,我能够在给定一组输入症状的情况下生成前 10 个诊断。现在,我想了解该输出是如何生成的。我通过添加输入向量知道这是余弦相似度,但我无法验证此输出。或者了解如何改进这一点。真的很想了解导致这些输出的后台到底发生了什么。

谁能帮我回答这些问题或强调这种方法的缺点/优点是什么

【问题讨论】:

    标签: python nlp gensim word2vec word-embedding


    【解决方案1】:

    Word2vec 将为您提供 n 维向量,根据它们的共现情况代表每种疾病。这意味着您将每个症状都表示为一个向量。

    一行 -

    X = ['fever', 'loss of appetite']
    
    X_onehot= [[0,0,0,1,0,0,0,0,0,0,0],
               [0,0,0,0,0,0,0,0,1,0,0]]
    
    X_word2vec= [[0.002,0.25,-0.1,0.335,0.7264],
                 [0.746,0.6463,0.0032,0.6301,0.223]]
    
    Y = #flu
    

    现在,您可以通过取 word2vec 的平均值来表示数据中的每一行,例如 -

    X_avg = [[0.374 ,0.44815, -0.0484, 0.48255, 0.4747]]
    

    现在,您的数据集中的每一行都有一个 5 长度的特征向量和一个类。接下来,您可以像对待任何其他机器学习问题一样对待它。

    如果您想预测疾病,那么只需在训练-测试拆分后使用分类模型。这样您就可以验证数据。

    对 word2vec 向量使用余弦相似度只会产生相似的症状。它不会让您建立疾病推荐模型,因为那样您将根据其他类似症状推荐症状。

    【讨论】: