![]() #скриптики
Искал что-нибудь для статистического анализа текста, но толком не нашёл. Кстати, если кто посоветует пригодный софт или сайт с автоматом на нём, буду признателен. В общем, в итоге скачал Mystem и к этому допилил короткий скрипт на Перле: use strict; use warnings; my %count; while (<>) { $count{$_}++ for /(?<={)[^|}]+/g; } my $sum = 0; foreach my $str (sort keys %count) { $sum ++; } $count {"Total dictionary"} = $sum; printf "%-31s %s\\n", $_, $count{$_} for sort { $count{$b} <=> $count{$a} || $a cmp $b} keys %count; Ничего особенного, в общем-то, но если прогнать текст через Mystem, а результат — через скрипт (можно всё в один пайп засунуть), то в итоге получится список слов с числом повторений. В первой строке выводится общее число разных слов (активный словарный запас) cat text.txt | mystem -e cp1251 | perl frequency.pl > out.stat Выход Mystem выглядит примерно так: он{он}продолжал{продолжать}завтрак{завтрак} То, что нужно считать — в фигурных скобках, причём иногда бывает и так: это{это|этот} Первая строка в while находит все слова между { и } или между { и | и для каждого из этих слов делает инкремент счётчика в хэше. Собственно, на этом и всё. Цикл foreach считает число записей в хэше и затем добавляет ещё одним элементом. Последующий printf сортирует хэш по счётчику и печатает пару из ключа и значения. 25 октября 2015
|
![]() |
|
На самом деле, есть такое:
https://fantlab.ru/article374 И вроде доступно, но для того, чтобы анализ работал, нужно размещать тексты на том сайте :( А мне хочется, чтобы они лежали, где лежат. Поэтому — не просто велосипед, а практически колесо ;) |
![]() |
|
Если уж быть совсем точным, то хотелось бы, чтобы это всё работало в ГуглДокс, сразу подсвечивая нужные слова и предлагая варианты.
Мечты, мечты... |