Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];
Внизпосчитать слова Найти похожие ветки
← →
aaaaa (2008-08-25 14:52) [0]Добрый день всем.
Есть большой кусок текста(точнее, большие куски в БД, записей много).
Нужно подсчитать какие слова, сколько раз в нем(ней) встречаются. Словоформы не учитываются.
← →
Игорь Шевченко © (2008-08-25 14:55) [1]
> Нужно подсчитать
Считай. Разрешение получено
← →
MBo © (2008-08-25 14:56) [2]По ходу чтения слов заносить их в некий словарь - например, префиксное дерево. Если слово уже есть - увеличивать счетчик.
← →
aaaaa (2008-08-25 14:57) [3]
> Игорь Шевченко © (25.08.08 14:55) [1]
Понедельник? :)
Скажи, как бы ты сделал - как сделать с черепашьей скоростью я знаю.
← →
aaaaa (2008-08-25 14:57) [4]
> MBo © (25.08.08 14:56) [2]
кто такой "префиксное дерево"?
← →
aaaaa (2008-08-25 15:00) [5]
> aaaaa (25.08.08 14:57) [4]
а, нашел.
Щас попробую, спасибо.
← →
aaaaa (2008-08-25 15:28) [6]
> 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, далее идут ветки с ключами а, б, в..., потом у а есть дети аа, аб, ав... Не пойму, как мне их добавлять? Как сказать-то? Э-э-э.... ну попалось первое слово: "арбуз", потом "артиллерия", что делать? Предположим, построил дерево так:
а-
ар - и здесь они покоятся
а следующее слово "артишок"! Че мне делать?
а-
ар - тут остался арбуз
-арти - сюда кабачки и артиллерию?
т.е. "метать" словея туды-сюды? Гемморой, как мне кажется - каждый раз проверять все ключи и слова.
Как это положено делать?
← →
MBo © (2008-08-25 15:29) [7]>кто такой "префиксное дерево"?
это лишь один из вариантов.
Возможно, подойдет и просто сортированный TStringList
← →
aaaaa (2008-08-25 15:33) [8]
> MBo © (25.08.08 15:29) [7]
> Возможно, подойдет и просто сортированный TStringList
само-собой, но есть время - хочу заморочиться
← →
MBo © (2008-08-25 15:42) [9]
а
р
б
у
з - 1
т
и
ш
о
к -1
л
лерия также
← →
aaaaa (2008-08-25 15:46) [10]
> MBo © (25.08.08 15:42) [9]
Клево, забодай меня комар!
Спасибо большое.
← →
aaaaa (2008-08-25 18:13) [11]е-мае, а как мне узнать где "конец"?
напр:
а
р
б
у
з - 10
ы - 2
словоформы-то я не учитываю:(
← →
JanMihail (2008-08-25 21:35) [12]слишком много вопросов. Сядь и соберись с мыслями. Все получится!
← →
MBo © (2008-08-26 05:17) [13]где число при узле ненулевое - там конец одного из слов.
если у узла есть листья - то есть и более длинные слова.
вроде тут особых сложностей нету...
← →
aaaaa (2008-08-26 12:09) [14]
> MBo © (26.08.08 05:17) [13]
ага, да. Спасибки.
> JanMihail (25.08.08 21:35) [12]
Спасибо, товарисч, так и сделаю! ЗЫ. JanMihail - это мужское имя - стиль поста какой-то экзальтированный?
← →
Труп Васи Доброго(заб. пароль) (2008-08-27 11:07) [15]А кой, извиняюсь за выражение, хрен тебе мешает сначала засунуть все слова в лист, отсортировать их там по алфавиту, а потом уже дерево строить?
← →
oldman © (2008-08-27 11:12) [16]
> Словоформы не учитываются.
Как бы это компьютеру объяснить?
"друг", "подруга" и "дружеский" - словоформы?
← →
ЛшдлуттнСфе (2008-08-27 16:11) [17]
> MBo ©
а можно это дерево и в начале разветвить? дабы приставки учесть.
← →
MBo © (2008-08-27 16:18) [18]>дабы приставки учесть.
автоматически без анализа нельзя определить - приставка в начале слова или нет - например, примус.
← →
ЛшдлуттнСфе (2008-08-27 20:15) [19]В общем, в итоге сведется к формированию статичного словаря...
← →
aaaaa (2008-08-28 14:42) [20]
> Труп Васи Доброго(заб. пароль) (27.08.08 11:07) [15]
мешало наличие свободного времени :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c