![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
посчитать слова
aaaaa © (2008-08-25 14:52:00)Добрый день всем.
Есть большой кусок текста(точнее, большие куски в БД, записей много).
Нужно подсчитать какие слова, сколько раз в нем(ней) встречаются. Словоформы не учитываются.
aaaaa (2008-08-28 14:42:00) [1]
> Труп Васи Доброго(заб. пароль) (27.08.08 11:07) [15]
мешало наличие свободного времени :)
ЛшдлуттнСфе (2008-08-27 20:15:00) [2]В общем, в итоге сведется к формированию статичного словаря...
MBo (2008-08-27 16:18:00) [3]>дабы приставки учесть.
автоматически без анализа нельзя определить - приставка в начале слова или нет - например, примус.
ЛшдлуттнСфе (2008-08-27 16:11:00) [4]
> MBo ©
а можно это дерево и в начале разветвить? дабы приставки учесть.
oldman (2008-08-27 11:12:00) [5]
> Словоформы не учитываются.
Как бы это компьютеру объяснить?
"друг", "подруга" и "дружеский" - словоформы?
Труп Васи Доброго(заб. пароль) (2008-08-27 11:07:00) [6]А кой, извиняюсь за выражение, хрен тебе мешает сначала засунуть все слова в лист, отсортировать их там по алфавиту, а потом уже дерево строить?
aaaaa (2008-08-26 12:09:00) [7]
> MBo © (26.08.08 05:17) [13]
ага, да. Спасибки.
> JanMihail (25.08.08 21:35) [12]
Спасибо, товарисч, так и сделаю! ЗЫ. JanMihail - это мужское имя - стиль поста какой-то экзальтированный?
MBo (2008-08-26 05:17:00) [8]где число при узле ненулевое - там конец одного из слов.
если у узла есть листья - то есть и более длинные слова.
вроде тут особых сложностей нету...
JanMihail (2008-08-25 21:35:00) [9]слишком много вопросов. Сядь и соберись с мыслями. Все получится!
aaaaa (2008-08-25 18:13:00) [10]е-мае, а как мне узнать где "конец"?
напр:
а
р
б
у
з - 10
ы - 2
словоформы-то я не учитываю:(
aaaaa (2008-08-25 15:46:00) [11]
> MBo © (25.08.08 15:42) [9]
Клево, забодай меня комар!
Спасибо большое.
MBo (2008-08-25 15:42:00) [12]
а
р
б
у
з - 1
т
и
ш
о
к -1
л
лерия также
aaaaa (2008-08-25 15:33:00) [13]
> MBo © (25.08.08 15:29) [7]
> Возможно, подойдет и просто сортированный TStringList
само-собой, но есть время - хочу заморочиться
MBo (2008-08-25 15:29:00) [14]>кто такой "префиксное дерево"?
это лишь один из вариантов.
Возможно, подойдет и просто сортированный TStringList
aaaaa (2008-08-25 15:28:00) [15]
> aaaaa (25.08.08 15:00) [5]
>
> > aaaaa (25.08.08 14:57) [4]
>
> а, нашел.
> Щас попробую, спасибо.
ну я быстер!
есть стал быть класс:
TMyAssTree = class
Nodes: TMyAssNodes;
public
procedure AddNode(st: string);
procedure DelNode(Index: Integer);
...
что-то там еще будет. Не знаю как сделать метод AddNode, если я правильно понимаю, то корень дерева равен nil, далее идут ветки с ключами а, б, в..., потом у а есть дети аа, аб, ав... Не пойму, как мне их добавлять? Как сказать-то? Э-э-э.... ну попалось первое слово: "арбуз", потом "артиллерия", что делать? Предположим, построил дерево так:
а-
ар - и здесь они покоятся
а следующее слово "артишок"! Че мне делать?
а-
ар - тут остался арбуз
-арти - сюда кабачки и артиллерию?
т.е. "метать" словея туды-сюды? Гемморой, как мне кажется - каждый раз проверять все ключи и слова.
Как это положено делать?
aaaaa (2008-08-25 15:00:00) [16]
> aaaaa (25.08.08 14:57) [4]
а, нашел.
Щас попробую, спасибо.
aaaaa (2008-08-25 14:57:00) [17]
> MBo © (25.08.08 14:56) [2]
кто такой "префиксное дерево"?
aaaaa (2008-08-25 14:57:00) [18]
> Игорь Шевченко © (25.08.08 14:55) [1]
Понедельник? :)
Скажи, как бы ты сделал - как сделать с черепашьей скоростью я знаю.
MBo (2008-08-25 14:56:00) [19]По ходу чтения слов заносить их в некий словарь - например, префиксное дерево. Если слово уже есть - увеличивать счетчик.
Игорь Шевченко (2008-08-25 14:55:00) [20]
> Нужно подсчитать
Считай. Разрешение получено