gensimを使用して、ディレクトリにあるサンプルファイルのword2vecモデルを作成しています。私はチュートリアルのオンラインに従いました。チュートリアルでは、ディレクトリ内のファイルを読み取り、それを1行ずつ処理します。私のサンプルファイルには9行あります。しかし、このコードは私の同じ行を9回与えます。誰かが何が起こっているか説明してください。複数回実行するPythonファイルイテレータ
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')
詳細:一度だけ['hi','how','are','you']
: と仮定ファイル名は私を与える必要があります
hi how are you.
I am fine.
I am good.
line.split()
のような3行が含まれています。しかし、これは3回起こるので、私は上記のリストを3回ではなく3回取得します。総文章が5の場合、5行目が返されます。
'line.splitで' line'は() 'は何ですか?どのように初期化されますか? – DyZ
ファイル内のすべての行について。それはforループで宣言されています –
だから '' fakepath/filename.txt''は 'dirname'ですか?それはディレクトリ名ではなく、私のファイル名のように見えます。 – DyZ