0

さまざまなソースから編集された単語の大規模なリストがあります。非常に多くの無関係な情報源から来ているので、いくつかの重複があると思います。一部の元のファイル内でも、重複があります。それらを整理するためのスクリプトを作成しましたが、この時点でファイルが非常に不自然になっているため、解析しようとするとメモリが不足します。ソースは以下のとおりです。私はWindows8、64ビット、Ruby1.9.3-p327を実行しています。

#!/usr/bin/env ruby

words = []
File.foreach( "wordlist.txt" ) do |line|
    words << line
end
words.uniq!()
words = words.sort()

wordFile = File.open( "wordlist.txt", "w" )

words.each do |word|
    wordFile << word + "\n"
    puts "Wrote to file: #{ word }"
end
4

1 に答える 1

2

重複を削除するには、さまざまな方法があります。1つはルビーでこれを行う必要はありません。単語がメモリに収まる場合は、一度見た単語のセットを使用して、それらを再度印刷することはできません。セットが大きすぎる場合は、sortコマンドを使用していつでもファイルをrubyの外部で並べ替えることができ(メモリの代わりに一時ディレクトリを使用するには-Tスイッチを調べます)、出力をにパイプしますuniq -c

于 2012-12-30T19:52:27.143 に答える