Найдите 10 наиболее часто встречающихся последовательностей из 2 слов в тексте, используя bash - PullRequest
0 голосов
/ 28 января 2019

Я использую cat test.txt | grep -o -E '\w+' | sort | uniq -c | sort -nr | head -10, чтобы найти 10 лучших повторяющихся слов, но не могли бы вы помочь мне найти 10 лучших повторяющихся последовательностей из 2 слов?

1 Ответ

0 голосов
/ 28 января 2019

Вот один для GNU awk:

$ awk '
BEGIN {
    FS="[,.]? "                           # add more punctuations
}
{
    for(i=1;i<NF;i++)                     # loop all words in record
        a[tolower($i OFS $(i+1))]++       # store word pairs and increase count
}
END {
    PROCINFO["sorted_in"]="@val_num_desc" # set the for traverse order 
    for(i in a) {                         # loop pairs
        print i,a[i]                      # print pair and count
        if(++j==10)                       # after top-10
            exit                          # guess
    }
}' lorem_ipsum.txt                        # some text

Вывод:

sit amet 6
ac ultricies 2
tellus donec 2
sed odio 2
sagittis quis 2
est duis 2
vitae luctus 2
donec eu 2
nec tincidunt 2
nullam nec 2

И если "этот другой" = "другой этот" заменить a[tolower($i OFS $(i+1))]++ на a[tolower(($i<$(i+1)?$i OFS $(i+1):$(i+1) OFS $i))]++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...