社区成员你好
我想从Gensim Word2Vec模型中输出1000个最常用的单词。但是,我对某些单词不感兴趣,因此我使用numpy(np.stdiff1d)进行过滤。之后,我使用“/n.join”创建了一个新列表,但现在我遇到了一个问题,每次调用列表中的条目“/n”。join都是在单词前面输入的(例如,而不是house/nhouse),因此我得到了一个键错误
我试图通过将列表(corpus_words)保存为.txt和“open with”来解决这个问题,但即使如此,当我试图获取单词的频率时,每个条目前面都有一个a/n
在“/n”之前使用print语句。join(新列表)也没有帮助
有办法解决这个问题吗
Model_Pfad = r'D:\OneDrive\Phyton\modelC.model'
ausgabe= open('D:\OneDrive\Phyton\wigbelsZahlen.txt', 'w')
model = Word2Vec.load(Model_Pfad)
x = list(model.wv.index_to_key[:1000])
stop_words = set (["an",
'as',
'art',
'ab',
'al',
"aber",
"abk.",
"alle",
"allem",
"allen",
"aller",
"alles",
"allg."
])
new_list = [item for item in x if item not in stop_words]
for i in new_list:
result = model.wv.get_vecattr(i, "count")
ausgabe.write(i + '\t' + str(result))
ausgabe.write('\n')
ausgabe.close
首先,
np.setdiff1d()
是从列表中删除项的一种有点奇怪的方法。更典型的是使用列表理解:其次,当前显示的代码使用
.join
将所有单词重新组合成一个大字符串,中间有'\n'
,并将该大字符串附加到文件中当然,这就是文件中的全部内容
另外,一个大的
corpus_words
字符串是而不是将是.get_vecattr()
的一个很好的参数,它需要一个单词键。(我希望您的行model.wv.get_vecattr(corpus_words, "count")
到KeyError
,然后再尝试打印到文件。)如图所示,代码中没有任何内容会删除
'\n'
字符,也没有任何内容会添加频率数字,也没有任何方式重新读取文件或以任何方式查找频率。有些代码仍然丢失吗您的最终目标仅仅是拥有一个包含1000个最常见单词的文本文件报告,还是能够在以后的代码中查找单个频率
相关问题 更多 >
编程相关推荐