ingwall: (knigi)
[personal profile] ingwall
Ищу программу, которая могла бы взять текстовый файл где-то в сто тысяч слов, и выдать мне частоту их употребления в тексте, типа tag cloud. Желательно бы ещё и русскоязычную, чтобы просекала формы одного и того же слова. Никто не знает?

Date: 2010-10-15 08:14 pm (UTC)
From: [identity profile] a-beorning.livejournal.com
лови.
--------------- counter.pl started------
#!/usr/bin/perl
use strict;

my %wordcounters; #хэш-счетчик. каждому слову в нем будет соответствовать его количество

while(<STDIN>) {  #в цикле по строкам того, что идет на вход
        my $string=$_; #берем строчку
        $string =~ tr/A-ZА-Я/a-zа-я/;#заменяем заглавные на строчные
        $string =~ s/[^а-яa-z]/ /g;  #всё, что не буква, заменяем на пробел (знаки препинания итд)  
        $string =~ s/\s+/ /g;        #двойные-тройные-... пробелы меняем на одиночные 
        my @words_of_string=split(' ',$string); # режем по пробелам на слова, кладем в массив
        for my $word (@words_of_string) { #в цикле по словам массива
                $wordcounters{$word}++;   #прибавляем счетчик этого слова 
        }
}

my @wordlist_unsorted = keys (%wordcounters);  #массив найденных слов - по заголовкам счетчика
my @wordlist_sorted = sort(@wordlist_unsorted);#отсортируем для красоты

for my $word (@wordlist_sorted){                   #для каждого слова из массива
       print $word," ",$wordcounters{$word},"\n"; #печатаем слово,счетчик>,перевод строки
}
--------------- counter.pl ended------

Под линуксом запускаешь так:
cat иcходный_файл.txt | perl counter.pl > resultat.txt




April 2026

S M T W T F S
   1234
567891011
12131415161718
19 202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 2nd, 2026 09:06 pm
Powered by Dreamwidth Studios