【发布时间】:2017-02-23 06:36:51
【问题描述】:
我正在使用 gensim 创建我在目录中的示例文件的 word2vec 模型。我遵循了一个在线教程,它读取目录中的文件并逐行处理。我的示例文件中有 9 行。但是这段代码给了我同样的行 9 次。有人可以解释一下发生了什么。
class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
for fname in os.listdir(self.dirname):
for line in open(os.path.join(self.dirname, fname)):
print os.path.join(self.dirname, fname)
yield line.split()
sentences = MySentences('/fakepath/Folder')
详情: 假设文件名包含 3 行,如
hi how are you.
I am fine.
I am good.
line.split() 应该只给我一次:['hi','how','are','you']。但这发生了 3 次,所以我三次而不是一次获得上述列表。如果总句数为 5,则返回该行 5 次。
【问题讨论】:
-
line.split()中的line是什么?它是如何初始化的? -
对于文件中的每一行。它在 for 循环中声明
-
那么,
'fakepath/filename.txt'是dirname?对我来说,它看起来像一个文件名,而不是目录名。 -
是的,对不起,这是目录名。我已经编辑过了
-
我实际上尝试了您的代码(Python 2.7.3。),它按预期工作。
标签: python python-2.7 iterator word2vec listiterator