我正在使用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次。
答案 0 :(得分:0)
首先,你应该弄清楚你想要做什么。 class MySentences
将目录作为参数,并创建一个带有生成器的对象sentences
。所以sentences
有一个生成器包含目录中所有文件中的所有行。
例如:
for line in sentences:
print(line)
你会得到很多单词作为元素的列表(我删除了打印路径的print语句)。这是:
['hi', 'how', 'are', 'you.']
['I', 'am', 'fine.']
['I', 'am', 'good.']