我正在学习Doc2Vec和gensim库。我已经能够通过创建诸如
之类的文档来训练我的模型LabeledSentence(['what', 'happens', 'when', 'an', 'army', 'of', 'wetbacks', 'towelheads', 'and', 'godless', 'eastern', 'european', 'commies', 'gather', 'their', 'forces', 'south', 'of', 'the', 'border', 'gary', 'busey', 'kicks', 'their', 'butts', 'of', 'course', 'another', 'laughable', 'example', 'of', 'reagan-era', 'cultural', 'fallout', 'bulletproof', 'wastes', 'a', 'decent', 'supporting', 'cast', 'headed', 'by', 'l', 'q', 'jones', 'and', 'thalmus', 'rasulala'], ['LABELED_10', '0'])`
请注意,此特定文档有两个标记,即' LABELED_10'和' 0'。
现在我加载模型后执行
print(model.docvecs.most_similar("LABELED_10"))
我得到了
[('LABELED_107', 0.48432376980781555), ('LABELED_110', 0.4827481508255005), ('LABELED_214', 0.48039984703063965), ('LABELED_207', 0.479473352432251), ('LABELED_315', 0.47931796312332153), ('LABELED_307', 0.47898322343826294), ('LABELED_124', 0.4776897132396698), ('LABELED_222', 0.4768940210342407), ('LABELED_413', 0.47479286789894104), ('LABELED_735', 0.47462597489356995)]
这是完美的!因为我得到了所有与LABELED_10最相似的标签。
现在我希望在训练模型时有一个反馈循环。因此,如果我给我的模型一个新文档,我想知道在标记并将该文档添加到我的语料库之前模型的分类有多好或多坏。我如何使用Doc2Vec做到这一点?那么我怎么知道LABELED_107和LABELED_10的文件是否真的相似。这是我想到的一种方法。这是我的随机森林分类器的代码
result = cfun.rfClassifer(n_estimators, trainingDataFV, train["sentiment"],testDataFV)
这是函数
def rfClassifer(n_estimators, trainingSet, label, testSet):
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
forest = RandomForestClassifier(n_estimators)
forest = forest.fit(trainingSet, label)
result = forest.predict(testSet)
return result
最后我可以做到
output = pd.DataFrame(data={"id": test["id"], "sentiment": result})
output.to_csv("../../submits/Doc2Vec_AvgVecPredict.csv", index=False, quoting=3)
反馈流程
保留一个标记正确的验证集。
删除标签后将标记的验证集提供给分类器,并将结果保存在csv中。
将结果与另一个具有正确标签的csv进行比较。
对于每个不匹配,将这些文档添加到标记的训练集中并再次训练模型。
重复以获得更多验证集。
这种做法是否正确?另外,我可以逐步训练doc2vec模型吗?让我们说,最初我训练我的doc2vec模型与100k标记文档。现在,在验证步骤之后,我需要在另外的10k文档上训练我的模型。我是否必须从一开始就训练我的模型?这意味着我需要再次在最初的100k标记文档上训练我的模型吗?
我非常感谢您的见解。
谢谢
答案 0 :(得分:2)
根据我对Doc2Vec的理解,你可以重新训练你的模型,只要你拥有模型的所有先前的向量。
从以下链接中,您可以看到他们如何执行验证: https://districtdatalabs.silvrback.com/modern-methods-for-sentiment-analysis