Как стать автором
Обновить

Комментарии 12

Сколько места занимает результат и как он хранится? Кстати, какая библиотека анализировалась?
Результат занимает 224 мб, хранится пока в виде текстовика в UTF-8. В кодировке win-1251 он-же весит 136 метров. Анализировался lib.rus.ec, только fb2 формат. В дальнейшем, наверное все данные буду переносить в какую-нибудь БД.
Расшарьте текстовик если не жалко — будет интересно посмотреть.
Отправьте мне, пожалуйста адрес вашей почты в личку.
НЛО прилетело и опубликовало эту надпись здесь
Trie — гениальная структура. По правде говоря ранее она не попадалась в мое поле зрения. Обязательно испытаю.

Касательно кода — учту. Но, наверное это не та статья в которой код действительно нужен.
НЛО прилетело и опубликовало эту надпись здесь
А какую реализацию AVL дерева использовали?
Использовал эту реализацию:
goletas.com/csharp-collections/

На мой взгляд — очень качественный код, комментированный, добавление своего функционала заняло менее получаса.

Что касается библиотеки для работы с zip архивами — брал здесь:
www.icsharpcode.net/opensource/sharpziplib/

С этого-же сайта использую IDE (SharpDevelop).
результат — слово/частота… частота как бы должна быть в других еденицах измерения… ну например каждоетретье слово «Я» или 0,15% это «Я», так сказать частота== регулярность.
Еще всегда было интересно
если частота употребления слов примерно величина постоянная… то и частота употребления букв при достаточно большой библиотеке — должна быть величиной постоянной…
не хотите ли посчитать?
Теперь, когда имеется относительно небольшой файл, в котором слова уже упорядочены — его обработка займет минут 5, можно посмотреть и процентное соотношение и, например, сколько процентов занимают существительные мужского рода в единственном числе и именительном падеже и т.п.
Про буквы не думал, но интересно, посмотрим.
Вернувшись к той-же задаче через несколько лет нашел решение, которое занимает вместо сотен строк — одну и доступно приблизительно с конца семидесятых годов прошлого века:
awk -F '[^а-яА-Я]+' '{for(i=1;i<=NF;i++)if($i)w[tolower($i)]++}END{for(i in w)print i, w[i]}' *.txt

Возможно местами это решение чуть медленнее, чем моё но использует меньше памяти и, пожалуй, стоит гораздо меньших усилий.
К слову, свою программу для частотного анализа я называл «All Words Knower», даже не подозревая на тот момент о существовании программы awk. =)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории