![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перебор текста по словарю [D7, WinXP]
_mik © (2006-07-14 22:18:00)Сдравствуйте!
Как можно организовать быстрыйперебор теста по словарю!
Причем словарь имеет довольно большой размер ~35000 слов и словосочетаний!, причем синтаксис словаря такой:
[$][*][слово][*]=[чему то]
где
$ - учитывать ли индекс;
* - любое кол-во символов;
_mik (2006-07-16 23:22:00) [41]Нет бинарный поиск, я начал использовать не давно!
Грубый перебор текста на наличие вхождений всех записей словаря начинающихся например с символа '*', да еще и наличие словосочетанийв словаре сильно замедляет процесс замены!
По этому в данный момент, я отказался от словосочетаний и обобщающих символов и испоьзую бинарный поиск!
Virgo_Style (2006-07-16 22:47:00) [42]Бинарный поиск занимает 10 секунд для ~500 символов (грубо - 100 слов)? Хм...
Я бы пользовался не StringList, а массивом записей (и вынес бы флаги в отдельные поля). А можно и БД попробовать...
_mik (2006-07-16 22:34:00) [43]Уточню формат ловаря
[$][*]слово[*]=замена
например:
$Москва=мос>ква
или
2012-й г=две тысячи двена<дцатый год
$*—ХIX=- 19
т.е. если в тексте встретится например: 'Москва' то она должна поменятся на 'мос>ква'
_mik (2006-07-16 22:29:00) [44]Нет я не использую БД, в дянный момент я использую тестовый файл, который грузится в TStringList после чего я беру первое слово из теста и ищу
бинарным поискомв словаре подходящее слово, а затем меняю!
Даже со словарем в 150 тыс слов (без обобщающих символов, кроме
'$' - учитывать ли регистр или нет)
к списку во время поиска программа обращается от силы 30~40 раз!
Я бы хотел реализовать обобшающие символы:
например: '*' хотябы в начале и конце слова,
а также поддержку словосочетаний для обработки ОМОГРАФОВ!
Virgo_Style (2006-07-16 21:55:00) [45]БД, "грубая" выборка с помощью LIKE, затем проверка?
_mik (2006-07-16 21:35:00) [46]Вся загвоздка у меня в том, что словарь содержит словосочетания, и обобщающие символы (синтаксис приведен выше), что существенно замедляет перебор текста!
Тупой перебор на Pentium 2.4HT теста ~500 символов занимает 10 сек при полной загрузки процессора, что для меня не приемлемо!
п.с. если когота заинтересовал компонент для работы с голосовыми движками (spichapi 4.0) могу выложить!
_mik (2006-07-16 21:32:00) [47]Прошу прощения за не точный вопрос!
- у меня есть какой либо текст (научный, художественный и т.п. и т.д)
- есть словарь произношений под этот текст (он содержит слова и словосочентания)
я беру небольшие куски текста и заменяю в них текст по словарю,
а потом отправляю в компонент, который заставляет голосовой движек произносить это текст!
Ketmar (2006-07-15 16:33:00) [48]RBTrees. AVLTrees. и ты ды, и ты пы... подробности, блин, подробности!
Pavia (2006-07-15 15:32:00) [49]Я бы помог автору если понял, что нужно.
> перебор теста по словарю!
Что сие значит? Найти слово или слово сочитание в словоре?
Ну так это просто. B+ деревья или поиск по хэш.
Leonid Troyanovsky (2006-07-15 01:45:00) [50]
> rvelat © (15.07.06 01:40) [3]
> перебор теста
> какого такого теста?
Ну, хоть какого-нибудь.
--
Regards, LVT.
Servelat (2006-07-15 01:40:00) [51]> Плиз, подробней, про [чему то].
подозреваю, что что-то - это перевод слова, если словарь иностранного языка =).
> перебор теста
какого такого теста?
Gero (2006-07-15 00:14:00) [52]Последовательным перебором и проверкой каждой строки на соответствие шаблону.
Leonid Troyanovsky (2006-07-14 22:34:00) [53]
> _mik © (14.07.06 22:18)
> Сдравствуйте!
И тебе тогож.
> Как можно организовать быстрый перебор теста по словарю!
MSSQL.
> [$][*][слово][*]=[чему то]
Плиз, подробней, про [чему то].
--
Regards, LVT.