Ещё вопрос залу
Oct. 15th, 2010 10:27 amИщу программу, которая могла бы взять текстовый файл где-то в сто тысяч слов, и выдать мне частоту их употребления в тексте, типа tag cloud. Желательно бы ещё и русскоязычную, чтобы просекала формы одного и того же слова. Никто не знает?
no subject
Date: 2010-10-15 08:14 pm (UTC)--------------- 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