私はPython 2でオートコンプリートとオートコレクトプログラムを書いています。スペルチェッカーの書き方についてPeter Norvigのブログであるlinkを使って、オートコレクトプログラムを書いています。autocorrectプログラムのためのpythonデータ構造の高速保存と取り出し?
ここでは、ネストされたリストを使用して実装されたトライデータ構造を使用しています。私は特定の接頭辞で始まるすべての単語を与えることができるので、私はトライを使用しています。リーフは、単語と単語の頻度を示す値のタプルになります。例えば、悪い、バット、
['b'['a'['d',('bad',4),'t',('bat',3)]],'c'['a'['t',('cat',4)]]]
ここで、4,3,4は、単語の使用回数または頻度の値です。同様に、私は約13万語の英語辞書を作成し、cPickleを使ってそれを保存しました。
これで、毎回トライ全体が読み込まれるのに約3〜4秒かかります。単語に遭遇するたびに頻度値をインクリメントしてから、更新されたトライを再度保存する必要があります。想像することができますが、毎回3〜4秒間待ってから、更新されたトライを毎回保存するために多くの時間を待つことが大きな問題になります。プログラムが実行されるたびにたくさんの更新操作を実行して保存する必要があります。
繰り返して更新される大きなデータ構造を格納するための高速または効率的な方法がありますか? IDEやモバイルデバイスの自動修正プログラムのデータ構造は、どのように保存されていますか?&はすばやく検索されましたか?私はさまざまなアプローチにもオープンしています。
@gospelslide:上記の優れた提案を容易にするために作られた 'klepto'パッケージ(私は作者です)を見てみてください。 –