我正在尝试在六本小说的语料库上训练doc2vec模型,我需要构建“标记文档”的语料库。
每本小说都是一个txt文件,已经过预处理,并使用read()
方法读入python,因此显示为“ long string
”。如果我尝试使用TaggedDocument形式gensim标记每本小说,则每本小说仅获得一个标签,并且标记文档的主体仅包含六个元素(这不足以训练doc2vec模型)。
有人建议我将每本小说分成句子,然后给每个句子分配一个标签作为句子的ID,然后给一个标签作为其所属的书的ID。但是,由于我不知道如何构造代码,所以我遇到了麻烦。
这是第一个代码,即使用“ long string
”格式的每本小说的代码:
`documents=[emma_text, persuasion_text, prideandprejudice_text,
janeeyre_text, shirley_text, professor_text]
corpus=[]`
`for docid, document in enumerate(documents):
corpus.append(TaggedDocument(document.split(), tags=
["{0:0>4}".format
(docid)]))`
`d2v_model = Doc2Vec(vector_size=100,
window=15,
hs=0,
sample=0.000001,
min_count=100,
workers=-1,
epochs=500,
dm=0,
dbow_words=1)
d2v_model.build_vocab(corpus)`
`d2v_model.train(corpus, total_examples=d2v_model.corpus_count,
epochs=d2v_model.epochs)`
但是,这意味着我的带标签文档语料库只有六个元素,而我的模型没有足够的元素可以训练。例如,如果我尝试将.most_similar
方法应用于目标书籍,则会得到完全错误的结果
总而言之,我需要帮助,使用TaggedDocument为每本书的每个句子(我已经将书拆分成句子)分配一个句子ID的标签和一个所属书籍ID的标签。建立用于训练模型的语料库。
感谢您的关注!