我目前正在研究一个从输入文件中提取所有 n-gram 的 awk 脚本。在文件上运行我的 awk 脚本时,它会打印出每个 n-gram(已排序)以及旁边的出现次数。在对输入文件进行测试时,它会打印出正确的 n-gram 顺序。只有出现的次数不正确。为了提取 n-gram,我有以下代码:
$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 是正确的,但出现次数不正确。