1
Pythonでは、私はmakovifyを使って、マルコフモデルを作成して、ランダムな文章を生成します。私はまた、マルコフモデルを文構造に従わせるためにnltkを使用しています。マルコフモデルを大量のコーパスから、特にnltkの品詞タグを使って生成するにはかなりの時間がかかるので、毎回同じモデルを生成するのは無駄です。そのため、マルコフモデルを後で再利用するJSONファイルとして保存することにしました。 しかし、これらの大きなJSONファイルをPythonで読み込もうとすると、いくつかの問題があります。次のコードです:Pythonのマルコフチェーンと大きなjsonファイルの読み込み
import nltk
import markovify
import os
import json
pathfiles = 'C:/Users/MF/Documents/NetBeansProjects/Newyckham/data/'
filenames = []
ebook = []
def build_it (path):
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".json"):
filenames.append(os.path.join(root, file))
for file in filenames:
print(str(file))
with open(file) as myjson:
ebook.append(markovify.Text.from_json(json.load(myjson)))
return ebook
text_model = markovify.combine(build_it(pathfiles))
for i in range(5):
print(text_model.make_sentence())
print('\r\n')
print(text_model.make_short_sentence(140))
print('\r\n')
しかし、私は次のエラーを取得する:
Traceback (most recent call last):
File "C:\Users\MF\Desktop\eclipse\markovify-master\terceiro.py", line 24, in <
module>
text_model = markovify.combine(build_it(pathfiles))
File "C:\Users\MF\Desktop\eclipse\markovify-master\terceiro.py", line 21, in b
uild_it
ebook.append(markovify.Text.from_json(json.load(myjson)))
File "C:\Python27\lib\json\__init__.py", line 290, in load
**kw)
File "C:\Python27\lib\json\__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
MemoryError
私はこの問題に対処する方法については、このウェブサイト上のいくつかの同様の質問を読んでいると、それらのほとんどが使用を指摘しますijsonとJSONファイルの望ましくない部分をスキップしていますが、実際にはJSON内には何もありません。
ファイルが大きすぎてメモリにロードできないようです。ファイルを 'pickle 'しようとするが、それが役立つかどうかは100%確信していない。 – PYA
これを試してみてくださいhttps://stackoverflow.com/questions/519633/lazy-method-for-reading-big-file-in-python/519653#519653 – PYA
実際のデータベースが必要でしょうか? – thebjorn