3

私は gawk を使用して、言語統計を作成するために、少なくとも 3 回出現する 3 つの単語のすべての関連付けを出力するために、大きなテキスト コーパス (約 3 ~ 4GB、電子ブックの編集) を調べています。コードは次のとおりです。

file.awk の内容:

BEGIN { RS="[^[:alnum:]]+" } 

{ w1 = w2; w2 = w3; w3 = $0 } 

NR > 2 { count[tolower(w1 " " w2 " " w3)]++ } 

END { 
     for (phrase in count) {
         if (count[phrase] >= 3) { 
             print phrase, count[phrase] 
         } 
     } 
} 

コマンド: gawk -f file.awk mytxtfile > 出力

小さなファイル (数百 MB) では問題なく動作しますが、1GB を超えるファイルでは動作しません: gawk は 1 分もかからずにすべての RAM (8GB) を消費し、スワップとシステム全体を消費し始めます。最終的にフリーズします。

最終的にもっと時間がかかる場合でも、コードを最適化する方法を知っていますか?

どうもありがとうございました

4

2 に答える 2