想从列表中调用单词,但每个条目之前总是有一个 /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 个最常用单词的文本文件报告,还是能够在以后的代码中查找各个频率?
社区成员您好,
我想从 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 个最常用单词的文本文件报告,还是能够在以后的代码中查找各个频率?