要调用列表中的单词,但在每个条目之前始终有a/n

2024-06-05 23:50:50 发布

您现在位置:Python中文网/ 问答频道 /正文

社区成员你好

我想从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


Tags: intxt列表model条目word2vecopenitem
1条回答
网友
1楼 · 发布于 2024-06-05 23:50:50

首先,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'字符,也没有任何内容会添加频率数字,也没有任何方式重新读取文件或以任何方式查找频率。有些代码仍然丢失吗

您的最终目标仅仅是拥有一个包含1000个最常见单词的文本文件报告,还是能够在以后的代码中查找单个频率

相关问题 更多 >