しばらく前に、思慮深く知的な人が bash スクリプトで私を助けてくれましたが、最近、自分が何を望んでいるのかを十分に説明していないことに気付きました。プレーン テキスト ファイルにフレーズ (ngram) の長いリストがあります。あるフレーズが別のフレーズの断片である場合、長い方だけが役に立ちます。そのため、短い方を削除する必要があります。以下のコードは、長い方を削除します。いくつかの文字を変更するだけで切り替えられることを願っています。
#! /bin/bash
((n=${1:-0})) || exit 1
declare -A ngrams
while read -ra line; do
for ((i = 0; i < ${#line[@]}; i++)); do
((ngrams[${line[@]:i:n}]++))
done
done
for i in "${!ngrams[@]}"; do
printf '%d\t%s\n' "${ngrams[$i]}" "$i"
done