0

特定のアルゴリズムを理解するために、 nltkの nltk-data に含まれるいくつかのコーパスを使用しています。

したがって、私のコードは一般的に次のようなスタイルになります。

import re, nltk, random
from nltk.corpus import reuters

def find_test_and_train_data():
    return [fileid for fileid in reuters.fileids() if re.match(r"^training/", fileid)], [fileid for fileid in reuters.fileids() if re.match(r"^test/", fileid)]

def generate_random_data(train_and_test_fileids):
    random.seed(348) ; random.shuffle(train_and_test_fileids[0])
    return train_and_test_fileids[0][2000:], train_and_test_fileids[0][:2000]

def fileid_words(fileid):
    return [word.lower() for line in reuters.words(fileid) for word in line.split() if re.match('^[A-Za-z]+$', word)]

if __name__ == '__main__':
    train_fileids, dev_fileids = generate_random_data(find_test_and_train_data())
    train_data=fileid_words(train_fileids)
    dev_data=fileid_words(dev_fileids)

したがって、それを対話型インタープリターで実行すると、変数を再設定することなくtrain_datadev_dataおよび対応するファイル ID でタスクを実行できます (非常に時間のかかるタスク)。

ただし、統計的に興味深いアルゴリズムを保存できるように、 .pyファイルに書き込めるようにしたいと考えています。

たとえば、インタープリターで機能する関数を取得したら、それをコピーして .py ファイルに貼り付けますが、これは非常に非効率的であり、IDE の機能を失います。

test_dataPython スクリプトをメモリ内で自動的に実行したり、変数の値をdbなどに保存したりできる IDE または Python モジュールはありますか?

すべての提案に感謝します

4

2 に答える 2

0

これを行う Python 固有の方法は、pickle を使用することです。

http://docs.python.org/library/pickle.html

変数をディスクに保存してからロードし直すことができます。

import pickle

data1 = {'a': [1, 2.0, 3, 4+6j],
     'b': ('string', u'Unicode string'),
     'c': None}
output = open('data.pkl', 'wb')
pickle.dump(data1, output)
output.close()

input = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)

将来、他の言語と互換性のある形式で保存する場合は、JSON を検討してください。

于 2012-05-26T10:46:48.147 に答える
0

もう 1 つの解決策は、inspect モジュールを使用してそこからコード文字列を取得し、それを file.py に保存することです。inspect モジュールを使用すると、コード オブジェクトとイベント ソース コードを取得し、生のコードを文字列に変換して、ファイルのような永続的なストレージに格納できます。

于 2012-05-26T10:57:04.797 に答える