如何解决Gensim LSI潜在语义索引模型返回空输出
我在使用 Gensim 的 LSI 模型时遇到了问题。
在预处理我的文本之后,我最终得到了一些空字符串。
我将那些空字符串转换为特殊标签:'@'
然后我用包含几个特殊标签的文本以及其他文本来训练我的 LSI 模型。
然而,当执行 vec_bow = self.dictionary.doc2bow(self.processed[input_index])
和 vec_lsi = self.model[vec_bow]
时,vec_lsi
最终成为一个空列表。
这是为了更好地理解的代码。
def model_setup(self,train):
self.dictionary = corpora.Dictionary(self.processed) #self.processed is the pre-processed text
self.corpus = [self.dictionary.doc2bow(
text) for text in self.processed] #using bag of words to create corpus
if train:
self.model = models.LsiModel(
self.corpus,id2word=self.dictionary,num_topics=self.num_topics)
self.model.save("eq_lsi.model")
self.model = models.LsiModel.load("eq_lsi.model")
def getResult(self,input_index,n_top):
vec_bow = self.dictionary.doc2bow(self.processed[input_index])
print(vec_bow)
print(vec_lsi)
index = similarities.MatrixSimilarity(self.model[self.corpus])
sims = index[vec_lsi]
sims = sorted(enumerate(sims),key=lambda item: -item[1])
print(sims)
对于输入索引为 1 的 '@' 的情况,getResult(1,3)
产生以下输出
用于打印(vec_bow)
[(3,1)]
用于打印(vec_lsi)
[]
用于打印(模拟)
[(0,0.0),(1,(2,(3,(4,(5,(6,(7,(8,(9,(10,(11,(12,(13,(14,(15,(16,(17,(18,(19,(20,(21,(22,(23,(24,(25,(26,(27,(28,(29,(30,(31,(32,(33,(34,(35,(36,(37,(38,(39,(40,0.0)]
(cf) 我使用的是 5 个主题的 LSI 模型。
如何从 vec_lsi 获取非空列表?或者这个设置是不可能的?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。