Просто используя терминал, начните считать слова через 5 минут

Для подсчета слов в Шекспире мы будем использовать следующие команды/инструменты Unix.

  • tr — заменить слова
  • sort — сортировать слова
  • uniq — найти уникальные вхождения
  • grep — найти определенные слова
  • less — показать ограниченный текст на консоли

tr — это утилита в Unix-подобных операционных системах, используемая для замены или удаления определенных символов во входном наборе данных. Это сокращение от перевести или транслитерировать.

Базовый синтаксис для всех инструментов

tr

Утилита считывает из ввода поток байтов и записывает результат в консоль. В качестве аргументов он принимает два набора символов и заменяет вхождения символов из первого набора соответствующими элементами из второго набора. Например,

tr 'abcd' 'jkmn'

сопоставляет все символы a с j, b с k, c с m и с d на n. Набор символов может быть сокращен с использованием диапазонов символов.

tr [A-Z] [a-z]


Сортировать

Чтобы отсортировать строки в файле от А до Я, напишите следующую команду

sort filename.txt

сортировать в обратном порядке

sort -r filename.txt

Чтобы отсортировать файл числово, мы используем –n. Эта опция используется для сортировки файла с числовыми данными, присутствующими внутри.

sort -n filename.txt

уникальный -c

Команда uniq -c в Linux — это утилита командной строки, которая подсчитывает повторяющиеся строки в файле. uniq не может обнаружить повторяющиеся строки, если они не являются смежными. Поэтому содержимое файла должно быть отсортировано перед использованием uniq.

grep

Grep находит либо определенные слова в файле, либо соответствует регулярному выражению. Если вы хотите узнать, как создавать и интерпретировать регулярные выражения, следующая статья поможет вам.



grep "unix" testfile.txt

Пример текста

Давайте сначала поработаем с небольшим текстом, чтобы увидеть, как ведет себя каждая утилита. После этого применим эти утилиты ко всему Шекспиру.

And Then My Heart With Pleasure Fills,
And Dances With The DAFFODILS.

Вставляем эти строки в файл test.txt. Эти две строки — последние две строки стихотворения Вордсворта «Нарциссы». Давайте сначала заменим все заглавные буквы строчными.

tr [A-Z] [a-z] < test.txt

Теперь давайте заменим все пробелы символом новой строки \n, чтобы получить только одно слово в строке. Для этого мы используем команду tr ' ' '\n' и передаем ее первой команде.

tr [A-Z] [a-z] < test.txt | tr ' ' '\n'

Теперь разберем эти слова

tr [A-Z] [a-z] < test.txt | tr ' ' '\n' | sort

Теперь посчитаем уникальные

tr [A-Z] [a-z] < test.txt | tr ' ' '\n' | sort | uniq -c

Теперь давайте отсортируем их по количеству

tr [A-Z] [a-z] < test.txt | tr ' ' '\n' | sort | uniq -c | sort -n

Давайте сделаем это в обратном порядке

tr [A-Z] [a-z] < test.txt | tr ' ' '\n' | sort | uniq -c 
                                                   | sort -n -r

Наконец, давайте найдем все слова, содержащие i, используя grep и регулярные выражения.

tr [A-Z] [a-z] < test.txt | tr ' ' '\n' | sort | uniq -c |            
                                        sort -n -r | grep '.*[i].*'

Это был очень маленький фрагмент текста. Гораздо интереснее применить это к произведениям Шекспира.

Давайте сначала получим текст Шекспира. Это огромный файл. Давайте сначала просто выясним слова, которые встречаются наибольшее количество раз.

Так как слов очень много, мы будем использовать команду less, чтобы показать только некоторые из них.

Новая строка встречается наибольшее количество раз. Игнорируя это, мы видим, что слова the и and занимают первые 2 позиции. Попробуем подобрать интересные слова. Давайте так, сколько раз было написано слово friend или enemy.

tr [A-Z] [a-z] < sh.txt | tr ' ' '\n' | tr '\.\,\;\-\?\!' '\n\n\n\n\n\n' | sort | uniq -c | sort -n -r | less | grep 'friend'

Попробуем найти все слова, в конце которых есть ed. Это даст нам подсказку о некоторых прилагательных, которые используются в тексте.

tr [A-Z] [a-z] < sh.txt | tr ' ' '\n' | tr 'A-Z' 'a-z' | sort |uniq -c |sort -n -r| grep '.*[aeiou].*ed$' |less

Мы видим, что не все из них являются прилагательными. Затем мы можем использовать дополнительные методы НЛП, чтобы уточнить наш набор слов и обнаружить контраст между наречиями и прилагательными, которые использовал Шекспир.

Эти быстрые инструменты в Unix дают нам возможность начать играть с текстом без каких-либо дополнительных знаний. Довольно часто такая обработка является первым шагом любой задачи НЛП. Лучше всего попробовать некоторые из этих примеров самостоятельно и ответить на мой вопрос там, где вы застряли.