gpt4 book ai didi

python - 如何提取用于 Doc2Vec 的单词

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:34 25 4
gpt4 key购买 nike

我正在使用推文准备 Doc2Vec 模型。每条推文的单词数组都被视为一个单独的文档,并标记为“SENT_1”、SENT_2“等。

taggeddocs = []for index,i in enumerate(cleaned_tweets):    if len(i) > 2: # Non empty tweets        sentence = TaggedDocument(words=gensim.utils.to_unicode(i).split(), tags=[u'SENT_{:d}'.format(index)])        taggeddocs.append(sentence)# build the modelmodel = gensim.models.Doc2Vec(taggeddocs, dm=0, alpha=0.025, size=20, min_alpha=0.025, min_count=0)for epoch in range(200):    if epoch % 20 == 0:        print('Now training epoch %s' % epoch)    model.train(taggeddocs)    model.alpha -= 0.002  # decrease the learning rate    model.min_alpha = model.alpha  # fix the learning rate, no decay

我希望查找与给定推文类似的推文,例如“SENT_2”。怎么办?

我得到类似推文的标签:

sims = model.docvecs.most_similar('SENT_2')for label, score in sims:    print(label)

打印为:

SENT_4372SENT_1143SENT_4024SENT_4759SENT_3497SENT_5749SENT_3189SENT_1581SENT_5127SENT_3798

但是给定一个标签,我如何获得原始推文单词/句子?例如。例如,“SENT_3497”的推文是什么?我可以将其查询到 Doc2Vec 模型吗?

最佳答案

Gensim 的 Word2Vec/Doc2Vec 模型不存储语料库数据 - 它们仅通过多次检查来训练模型。如果您需要检索原始文本,您应该填充您自己的按键查找数据结构,例如 Python 字典(如果您的所有示例都适合内存)。

另外,在最新版本的 gensim 中,您的代码实际上会对您的 taggeddocs 进行 1,005 次训练,其中许多都具有无意义/破坏性的负 alpha 值。

  • 通过将其传递给构造函数,您可以告诉模型使用您的参数和默认值(其中包括默认的 iter=5 遍数)进行 self 训练。

  • 然后再进行 200 次循环。每次调用 train() 都会执行默认的 5 遍。通过将 alpha 从 0.025 递减 0.002 199 次,最后一个循环将使用有效的 alpha 0.025-(200*0.002)=-0.375 - 一个负值,本质上是告诉我们模型在每个训练示例的改进方向上进行较大的修正。

只需使用iter参数来选择所需的传递次数。让类自行管理 alpha 更改。如果在实例化模型时提供语料库,则无需执行进一步的步骤。但如果您在实例化时不提供语料库,则需要执行一次 model.build_vocab(tagged_docs) 一次,然后执行 model.train(tagged_docs) 一次。

关于python - 如何提取用于 Doc2Vec 的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com