pyOut
Март 9, 2010 16:35:07
Как можно эффективно для Python2.5 написать следующий функционал.
В базе хранятся keywords, и phraze.
Имеется на входе текст. Нужно проверить текст на наличие имеющихся в базе кейвордов(keywords) и вывести нужную фразу(phraze) соответствующую кейворду(keywords). При не нахождения keyword-ов выдавать какую-то дефолтную фразу.
Поэтому возникает вопрос, как это лучше сделать? Как правильней разбить на кейворды текст чтобы не дергать базу на нахождения подходящего кейворда.
Zubchick
Март 9, 2010 18:24:56
блин я такое на первом курсе делал :)
Я проверял по многу раз все слова и их производные, считал баллы и выводил. База у меня была собственноручнопридуманная, а вам дабы не париться с ерундой типа поиска и организации информации в этой самой базе я советую использовать любую субд.
pyOut
Март 9, 2010 20:19:11
Zubchick, не совсем понял что вы хотели сказать. То что я могу использовать любую СУБД это понятно. Но как быть с разбиением текста на кейворды? Вы предлагаете брать каждое слово текста и дергать каждый раз БД на принадлежность к keywords?
Ferroman
Март 9, 2010 20:47:25
“не дергать базу на нахождения подходящего кейворда” не получится. Придётся дёргать базу за каждое слово.
Единственное, что я бы сделал, как оптимизацию - разбил бы слова по длине в разные таблицы, избавившись от всех заведомо маленьких/больших чем нужно, да и поиск по маленьких таблицах быстрее. А заранее оптимизировать как-то более хитро - нет смысла, я думаю.
Zubchick
Март 9, 2010 20:47:41
а че нет то?)
БД на то и нужна чтобы ее дергать. У меня база была около 2х метров искал я где-то раз по 4*n на каждую фразу, где n число слов во фразе. И ничего, работало очень быстро. Ну мусор типа слов паразитов, союзов междометий можно убрать. Это в самом примитивном варианте.
Если хотите чуть более осмысленного бота (или что там у вас будет?) ) попробуйте посмотреть в сторону цепей Маркова. Это где у вас есть некоторое сочетание (слов-символов) и по нему вы выводите другое сочетание. Часть первого + только что выведенное дает нам новую комбинацию, которую мы снова ищем в базе…(а куда от этого денешься то?) Вот таким образом.
Вообще с этим делом все довольно трудно, есть какой-то хардкорный рускоязычный ресурс в интернете по поводу ботов, поищите если интересно.