-1

Python でのトピック モデリングに gensim パッケージを使用しています。

gensim を使用してトピック モデルをトレーニングしようとしています。以下は train.py モジュールです。

class Corpus(object):
    def __init__(self, cursor, reviews_dictionary, corpus_path):
        self.cursor = cursor
        self.reviews_dictionary = reviews_dictionary
        self.corpus_path = corpus_path

    def __iter__(self):
        self.cursor.rewind()
        for review in self.cursor:
            yield self.reviews_dictionary.doc2bow(review["words"])

    def serialize(self):
        BleiCorpus.serialize(self.corpus_path, self, id2word=self.reviews_dictionary)

        return self


class Dictionary(object):
    def __init__(self, cursor, dictionary_path):
        self.cursor = cursor
        self.dictionary_path = dictionary_path

    def build(self):
        self.cursor.rewind()
        dictionary = corpora.Dictionary(review["words"] for review in self.cursor)
        dictionary.filter_extremes(keep_n=10000)
        dictionary.compactify()
        corpora.Dictionary.save(dictionary, self.dictionary_path)

        return dictionary


class Train:
    def __init__(self):
        pass

    @staticmethod
    def run(lda_model_path, corpus_path, num_topics, id2word):
        corpus = corpora.BleiCorpus(corpus_path)
        lda = gensim.models.LdaModel(corpus, num_topics=num_topics, id2word=id2word)
        lda.save(lda_model_path)

        return lda

このモジュールを実行すると、次のエラーが発生します。

> Traceback (most recent call last):


    File "train.py", line 74, in <module>
    main()

    File "train.py", line 68, in main
    dictionary = Dictionary(reviews_cursor, dictionary_path).build()
    File "train.py", line 38, in build
    corpora.Dictionary.save(dictionary, self.dictionary_path)
    File "/usr/local/lib/python2.7/dist-packages/gensim/utils.py", line 288, in save
    pickle(self, fname)
    File "/usr/local/lib/python2.7/dist-packages/gensim/utils.py", line 666, in pickle
    with smart_open(fname, 'wb') as fout: # 'b' for binary, needed on Windows
    File "/usr/local/lib/python2.7/dist-packages/gensim/utils.py", line 661, in smart_open
    return open(fname, mode)
    IOError: [Errno 2] No such file or directory: 'models/dictionary.dict'

誰でも私が問題を理解するのを手伝ってくれますか?

4

1 に答える 1

3

保存操作中に「No such file or directory」が発生した場合は、通常、出力ファイルのコンテナーとして指定したディレクトリ パスが存在しないことを意味します。この場合 self.dictionary_path = "models/dictionary.dict"、相対パスであることが明確に指定されています。このパスへの保存エラーは、現在の作業ディレクトリに対して「models」ディレクトリが存在しないため、ファイルを「models」内に保存できないことをおそらく意味します。

現在の作業ディレクトリを確認するには、os.getcwd. ディレクトリが存在するかどうかをテストするには、os.path.isdir. ディレクトリを作成するには、os.mkdir.

于 2014-10-09T19:22:09.300 に答える