Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1207230280
ANB
2008-04-03 17:44
2008.10.05
Оракл : как попользовать в запросе два with ?


15-1218023843
Ru
2008-08-06 15:57
2008.10.05
А чего чат сдох?


15-1218840977
ZeroDivide
2008-08-16 02:56
2008.10.05
Новых версий Turbo Delphi не будет :(


15-1219052638
начинающий
2008-08-18 13:43
2008.10.05
Задачка.


15-1219000113
Andy BitOff
2008-08-17 23:08
2008.10.05
Компонент реализующий RAMDisk.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский