1

次の形式のテーブルがあります。

source ||| target ||| s1 s2 s3 s4 s5 ||| ||| c1 c2 . 

この形式の 2 つのファイルがあり、それぞれ 9,000 万行と 5,000 万行です。それらを処理して新しいファイルを生成したい。しかし、私は毎回間違いを犯しているので、ファイルを読み込んで辞書を生成するのに時間がかかりすぎます。また、マーシャルを使用して毎回それらをダンプおよびロードすると、それでもかなりの時間がかかります。もっと速い方法はありますか?両方のケースにコードが添付されています。

htEnPT = defaultdict(list)
for phrase in open(phraseTable,'r'):
    parts = phrase.split(' ||| ')
    sourcePhrase = removePunctuations(parts[0])
    htEnPT[sourcePhrase].append(removePunctuations(parts[1]),parts[2],parts[3])

これは毎回dictをロードし、長い時間がかかります。

そして、上記を行った後にこれを行うと、

marshal.dump(dict(PhraseTable),open(sys.argv[4],'wb'))

次に、これを行う:

marshal.load(open(sys.argv[1],'rb'))

まだ本当に長い時間がかかります。

では、プロトタイピング時にこのような大きなファイルを処理するより高速な方法はありますか? ありがとう。

4

1 に答える 1

1

ファイルの行のサブセットをテストに使用できます。

于 2012-12-01T04:43:20.050 に答える