Gensym word2vec: итератор не останавливается с выходом
У меня есть этот итератор предложений, который использует yield
так что формально это генератор
from gensim.utils import simple_preprocess
from gensim.parsing.preprocessing import STOPWORDS
import json
import os
class LyricsCorpus(object):
def __init__(self, corpus, tokenize=False, deaccent=False):
self.corpus = corpus
self.tokenize = tokenize
self.deaccent = deaccent
def __iter__(self):
for index,fname in enumerate( os.listdir(self.corpus) ):
with open( os.path.join(self.corpus, fname) ) as data_file:
data = json.load(data_file)
for item in data:
if "lyrics" in item:
if "lyrics_body" in item["lyrics"]:
if self.tokenize:
yield self.tokens( item["lyrics"]["lyrics_body"] )
else:
yield item["lyrics"]["lyrics_body"].split()
'''
This lowercases, tokenizes, de-accents (optional). – the output are final tokens = unicode strings, that won’t be processed any further.
'''
def tokens(self,text):
return [token for token in simple_preprocess(text, deacc=self.deaccent, min_len=2, max_len=15) if token not in STOPWORDS]
при столкновении с Word2vec
лайк
min_count = 1
size = 50
window = 4
model = Word2Vec(corpus_iterator, min_count=min_count, size=size, window=window)
итератор не останавливается, бесконечно просматривая файлы в папке corpus. Это не происходит в обычной итерации, как
from LyricsCorpus import *
it=LyricsCorpus('./corpus')
[item for k in it]