想从列表中调用单词,但每个条目之前总是有一个 /n

Want to call words from a list but there is always a /n before every entry

社区成员您好,

我想从 Gensim Word2Vec 模型中输出频率最高的 1000 个单词。但是,我对某些单词不感兴趣,因此我使用 numpy (np.stdiff1d) 对其进行过滤。之后我使用 '/n'.join 创建一个新列表,但现在我遇到了每次调用条目时的问题来自列表 '/n'.join 在单词前面输入(例如,而不是 house /nhouse),所以我得到一个关键错误。

我试图通过将列表 (corpus_words) 保存为 .txt 并“打开方式”来解决这个问题,但即便如此,当我尝试获取单词的频率。

在 "/n".join(new_list) 之前使用打印语句也无济于事。

有什么办法可以解决这个问题吗?

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() 是一种从列表中删除项目的有点奇怪的方法。更典型的是使用列表理解:

stop_words = set(['an',v'as', 'art', 'ab', 'al'])
new_list = [item for item in x if item not in stop_words

其次,您当前显示的代码然后使用 .join 将所有单词重新组合成一个大字符串,在它们之间使用 '\n',并将该大字符串附加到文件中。

当然,这就是文件中的所有内容。

此外,那个大 corpus_words 字符串 不是 将成为 .get_vecattr() 的一个很好的论据,它需要一个单词键。 (在尝试任何打印到文件之前,我希望你的行 model.wv.get_vecattr(corpus_words, "count")KeyError。)

如图所示,您的代码中没有任何内容会删除 '\n' 字符,也没有任何内容会添加频率数字,也不会以任何方式重新读取文件或以任何方式查找频率。是否还缺少一些代码?

您的最终目标是简单地获得 1,000 个最常用单词的文本文件报告,还是能够在以后的代码中查找各个频率?