做单词嵌入后单词到句子的相似度

问题描述 投票:0回答:1

我的数据框有 1000 个文本行。

我做了word2vec。

现在我想创建一个新字段,它给出每个句子到我想要的单词的距离,比如说“king”这个词。

我考虑在每个句子中取与king这个词最接近的4个单词,然后对它们进行平均。 也许可以使用

model.wv.similarity
。 每个句子的平均值将在 df['king'] 字段中

我很高兴知道如何做到这一点或听到另一种方法。

示例数据:

    data = {
    'text': [
        "The king sat on the throne with wisdom.",
        "A queen ruled the kingdom alongside the king.",
        "Knights were loyal to their king.",
        "The empire prospered under the rule of a wise monarch."
    ]
}
df = pd.DataFrame(data)
df['text']=df['text'].str.split()    

model = Word2Vec(df['text'], vector_size=100, window=2, min_count=1 )

model.wv.similarity('Knights','king')

编辑

我的使命是:

我有 1000 个文本行(抱怨某事的人) 我想把它们分成4个词。 可以说单词 1 为王。第 2 个词是城堡…… 我想知道每个句子的 4 个单词中哪个单词最能代表该句子。 为了做到这一点,我考虑从 4 个单词中取出每个单词,并计算 df['text'] 中所有单词的

model.wv.similarity
。 之后,对于每个句子,将得分最高的 3 个单词放入单词 king(以及单词 castle 和 et..)。 计算 3 个最高分的平均值,这就是该句子的 df['king'] 值

python nlp text-mining word2vec similarity
1个回答
0
投票

在我看来,这是一个“无法解决”的问题,我会从另一个方向思考。 由于每个句子都包含很多“词”;如何确定句子中哪个单词最重要?

让我们以比较

"king"
与句子
"A king is married to a queen. They don't live in a house but a castle"
为例。

哪个词

["king", "queen", "house", "castle"]
应该与你的句子产生最高的相似度,为什么?

如果你真的应该走这条路,那么我建议你使用一个句子嵌入器,你可以训练它来完成特定的任务,即你将有一个句子列表和一个最相似单词的列表

texts = ["list of text", "that contains sentences"]
words = ["text", "sentences"]

然后您将训练嵌入器以产生每个

(text[i], words[i])
之间的最高相似度。我怀疑它会那么有效,但可能会完成这项工作。

如果您尝试描述您的“真实”问题,我们也许能够为您提供进一步的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.