↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
pskovoroda
25 октября 2015
Aa Aa
#скриптики
Искал что-нибудь для статистического анализа текста, но толком не нашёл. Кстати, если кто посоветует пригодный софт или сайт с автоматом на нём, буду признателен.

В общем, в итоге скачал 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
12 комментариев
... примеры оксюморонов: "живой труп", "квадратный треугольник", "самодокументирующийся Perl"...
Да ну, здесь же комменты писать не на что :)

Сейчас добавлю.
pskovoroda
Я про синтаксис в целом =-) ИМХО, Perl недалеко ушел от brainfuck-а.
Шутка, конечно, но...
О, так поэтому я от него в таком восторге. Иногда программирование на нём вполне заменяет полноценный коитус.
*возоржал под лавкою*
Для русского или для какого применяться будет?
Какой именно анализ нужен? Возможных функций дофига.
Для русского, конечно. Мне много не надо — частота использования слов, словарный запас, удельный вес прямой речи, но это я и сам могу сделать.

На самом деле, морфологический разборщик стоило бы дополнить ещё и разборщиком идеом, чтобы уж совсем интересно было...
pskovoroda
Типа такого?
Иначе, если хочется самодельное - в Python есть NLTK, лемматизатор лучше использовать PyMorphy, с MWE всё так себе даже в английском, а в русском и подавно, так что можно не заморачиваться.
Cheery Cherry, спасибо.

Первое имеет ограничения и не делает того, что нужно. Второе вполне неплохо делается Mystem, но уже сразу из консоли и без Питона ;)

Моей конечной целью было получить цифру для активного словарного запаса и статистику для того, чтобы эту цифру увеличить за счёт наиболее употребимых мною слов и выражений. Цифры теперь у меня есть, и я могу к ним приделать словарь сининимов.

Потом прогнать проверку по уже использованным синонимам и вставить в текст предлагаемые варианты. Потом пройтись по всему этому человеком, естественно.
Чую-чую, велосипедьим духом пахнет :)
На самом деле, есть такое:

https://fantlab.ru/article374

И вроде доступно, но для того, чтобы анализ работал, нужно размещать тексты на том сайте :( А мне хочется, чтобы они лежали, где лежат.

Поэтому — не просто велосипед, а практически колесо ;)
Если уж быть совсем точным, то хотелось бы, чтобы это всё работало в ГуглДокс, сразу подсвечивая нужные слова и предлагая варианты.

Мечты, мечты...
ПОИСК
ФАНФИКОВ









Закрыть
Закрыть
Закрыть