現在、入力ファイルからすべての n-gram を抽出する awk スクリプトに取り組んでいます。ファイルで awk スクリプトを実行すると、すべての n-gram (ソート済み) が出力され、横に出現回数が表示されます。入力ファイルでテストすると、n-gram の正しい順序が出力されます。発生数だけが正しくありません。nグラムを抽出するために、次のコードがあります。
$1=$1
line=tolower($0)
split(line,chars,"")
begin_len=0
for (i in chars){
ngram=""
for (ind=0;ind<n;ind++){
ngram=ngram""chars[i+ind]
}
if(begin_len == 0){
begin_len=length(ngram)
}
if(length(ngram) == begin_len){
counter+=1
freq_tabel[ngram]+=1
}
}
(ソート機能は含まれていません)コードに何か問題があるのではないかと思っていました。それとも、私が見落としているいくつかの側面がありますか?
私が持つべき出力は次のとおりです。
35383
1580 n
1323 en
1081 e
940 de
839 v
780 er
716 d
713 an
615 t
代わりに、次の出力があります。
34845
1561 n
1302 en
1067 e
930 de
827 v
772 er
711 d
703 an
609 t
ご覧のとおり、n-gram は正しいのですが、出現回数は正しくありません。
入力ファイル: http://cl.ly/202j3r0B1342