?

Log in

No account? Create an account

Previous Entry | Next Entry

Ещё вопрос залу

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

Comments

( 14 comments — Leave a comment )
nasse
Oct. 15th, 2010 02:32 pm (UTC)
ispell знает формы. Остального не помню. Я в свое время слегка скриптовала. Под линух.
ingwall
Oct. 15th, 2010 02:40 pm (UTC)
А слова он считает?
nasse
Oct. 15th, 2010 02:46 pm (UTC)
Тогда не считал. Кажется. Сейчас не знаю. Вообще он спеллчекер.
ingwall
Oct. 15th, 2010 02:48 pm (UTC)
Да, я понял уже, что он спеллчекер. Сомневаюсь, что он мне поможет.
nasse
Oct. 15th, 2010 02:52 pm (UTC)
Я брала слово, трансформировала в базовую форму (ispell'ом). Новое слово пихала в базу, уже имеющемуся в базе увеличивала счетчик.
Я так Черную Книгу Арды обсчитывала :)
nasse
Oct. 15th, 2010 02:55 pm (UTC)
Только там будут проблемы с омонимами. И словоформами-омонимами (какая).
Так что оно все равно полуручное...
chorti_shto
Oct. 15th, 2010 02:36 pm (UTC)
If you're OK with a quick & dirty solution: a simple VBA Find->Count macro would do
ingwall
Oct. 15th, 2010 02:40 pm (UTC)
Will it count instances of every word?
chorti_shto
Oct. 15th, 2010 07:20 pm (UTC)
If you put it into a loop that goes through every word in your 100K word list
imenno
Oct. 15th, 2010 03:32 pm (UTC)
Не ответ на вопрос
а радостный вздох: "na vedui...." :)
a_beorning
Oct. 15th, 2010 05:42 pm (UTC)
Хм.
Если не мучаться с разными формами и под рукой есть линух-машина, то перловый скриптик пишется за 15 минут.

Надо - скажи.

Со словоформами - чуть сложнее.
ingwall
Oct. 15th, 2010 06:08 pm (UTC)
На словоформах не настаиваю, из линух-машин имею только хакинтош с Леопёрдом. Если сможешь написать - будет благодарность в письменном виде! :)
a_beorning
Oct. 15th, 2010 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




yu_le
Oct. 20th, 2010 06:55 am (UTC)
http://www.wordle.net/
Не подойдёт?
( 14 comments — Leave a comment )