我的数据框有 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'] 值
在我看来,这是一个“无法解决”的问题,我会从另一个方向思考。 由于每个句子都包含很多“词”;如何确定句子中哪个单词最重要?
让我们以比较
"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])
之间的最高相似度。我怀疑它会那么有效,但可能会完成这项工作。
如果您尝试描述您的“真实”问题,我们也许能够为您提供进一步的帮助。