有一些问题,我已经研究过,但我仍然不确定的几件事。
我想将一个页面流(连在一起的PDF)分割成单个文档。因此,诀窍是找出一个文档的结尾位置和下一个文档的起始位置。因此,PDF可以有1000页,可以由20个文档组成,每个文档都有不同的长度。
尽管如此,我想介绍的一个特性是“页面相似性”,其中页面(p)对其之前的页面(p-1)有一个相似的评分。因此,研究这个问题会让我找到很多使用LDA和LSI模型的例子,但这是一条路吗?
我已经做了一个语料库,从所有1000页的所有标记,大写,曲线图。比较两页的最好方法是什么?我看过这个例子,其中使用LSI模型将查询与整个语料库进行比较,但我不知道如何将其与前一个页面/文档进行比较。任何其他的想法都将受到极大的赞赏!
texts = data_lemmatized # --> all tokenized + filtered + bigrams + trigrams using gensim
dictionary = corpora.Dictionary(data_lemmatized)
corpus = [dictionary.doc2bow(text) for text in data_lemmatized]
lsi = models.LsiModel(corpus, id2word=dictionary, num_topics=2)
vec_bow = dictionary.doc2bow(data_lemmatized[1]). #--> this is page 2, which I want to compare with data_lemmatized[0]
vec_lsi = lsi[vec_bow]
index = similarities.MatrixSimilarity(lsi[corpus])
sims = index[vec_lsi] # -->this performs a similarity query against the corpus, but I want only 1 page发布于 2022-05-22 23:13:06
有许多不同的文本相似性计算;哪一种是“方法”将取决于您的数据、项目目标和资源。LDA和LSI都是合理的尝试。
Gensim模型可以处理你给它们的任何“文档”--所以,如果你在训练一个主题模型之前将你1000页的PDF预处理成20个真正的文档,或者1000页,那么这些也是它将分析的文本单位。
你是想把这些页面与推断文档的边界进行比较吗?(你确定PDF中没有其他更好的界限吗?您确定所有想要的文档边界都与页面边界对齐吗?)
进行页面级别的比较可能有效,也可能不适用,这取决于单词/短语的用法从一个文档的末尾到另一个文档的变化有多生动。
通常,您可以认为许多Gensim模型为文本提供了摘要向量。对所有文档的查询对于列出排序匹配是有用的,但是如果您想做一个简单的成对计算,您将从模型中分别得到每个文本的向量,然后对向量使用直接计算(例如余弦相似度)。例如:
page1_bow = dictionary.doc2bow(data_lemmatized[0])
page1_lsi = lsi[page1_bow]
page2_bow = dictionary.doc2bow(data_lemmatized[1])
page2_lsi = lsi[page2_bow]
cossim = gensim.matutils.cossim(page1_lsi, page2_lsi)( gensim.mattutils.cossim()函数是一个方便的助手,用于计算稀疏数组之间的余弦相似性-包括LSI在内的许多Gensim字包填充模型。对于其他密集向量,您可以使用余弦相似度的原始计算,或者scipy.spatial.distance.cosine提供的余弦距离函数或其他方法。)
https://stackoverflow.com/questions/72341473
复制相似问题