我使用 spaCy 和 pandas 得到了奇怪的重复结果

I'm getting strange, repeated results using spaCy and pandas

提问人:Sendagaijin 提问时间:11/8/2023 最后编辑:Sendagaijin 更新时间:11/8/2023 访问量:37

问:

我正在制作一个机器人来解决《纽约时报》的“连接”游戏。我正在尝试制作一个具有单词余弦相似性的矩阵,以便我可以检查哪些是最有可能的同义词,但是矩阵有重复行的奇怪现象,我无法弄清楚为什么。

这是我的代码:

nlp = spacy.load("en_core_web_md")
def synonym_detector(words):
    #takes in a list of strings, calculates the cosine similarity between all words.

    word_matrix = pd.DataFrame(columns = words, index = words)
    vectors = [nlp(x) for x in words]
    
    for i in range(len(vectors)):
        for j in range(i+1, len(vectors)):
            similarity = vectors[i].similarity(vectors[j])
            word_matrix.loc[words[i],words[j]] = similarity
    
    return word_matrix   
synonym_detector(['DAISY', 'ROSE', 'TULIP', 'VIOLET', 'BARN', 'CHICKEN', 'FARMER', 'TRACTOR','ASTER', 'CARPENTER', 'CRAVEN', 'WAN','DUST', 'LIFE', 'SPORTS', 'YELLOW'])

这是输出

奇怪的是,输出有重复的行,我不知道为什么。 此外,.similary 测试给了我一些奇怪的答案。例如

dust = nlp('dust')
yellow = nlp('yellow')
dust.similarity(yellow)

我得到 1.0。

感谢您的帮助!

python pandas 调试 空间

评论

0赞 tripleee 11/8/2023
请不要发布代码、错误消息或其他文本数据的图像。
1赞 tripleee 11/8/2023
我在该图像中没有看到任何重复的行。
0赞 Corralien 11/8/2023
dust.similarity(yellow)为我返回 0.326034887199003。

答:

0赞 aab 11/8/2023 #1

具有默认向量(非小花向量)的模型对多个单词使用相同的向量以节省空间。如果要为向量表中的每个单词提供唯一的向量,请改用模型。mdlg

md矢量是使用以下选项创建的: https://spacy.io/api/cli#init-vectorsprune