Уведомления

Группа в Telegram: @pythonsu

#1 Март 9, 2010 16:35:07

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбиение на keywords

Как можно эффективно для Python2.5 написать следующий функционал.
В базе хранятся keywords, и phraze.
Имеется на входе текст. Нужно проверить текст на наличие имеющихся в базе кейвордов(keywords) и вывести нужную фразу(phraze) соответствующую кейворду(keywords). При не нахождения keyword-ов выдавать какую-то дефолтную фразу.
Поэтому возникает вопрос, как это лучше сделать? Как правильней разбить на кейворды текст чтобы не дергать базу на нахождения подходящего кейворда.



Отредактировано (Март 9, 2010 16:35:59)

Офлайн

#2 Март 9, 2010 18:24:56

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбиение на keywords

блин я такое на первом курсе делал :)
Я проверял по многу раз все слова и их производные, считал баллы и выводил. База у меня была собственноручнопридуманная, а вам дабы не париться с ерундой типа поиска и организации информации в этой самой базе я советую использовать любую субд.



Офлайн

#3 Март 9, 2010 20:19:11

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбиение на keywords

Zubchick, не совсем понял что вы хотели сказать. То что я могу использовать любую СУБД это понятно. Но как быть с разбиением текста на кейворды? Вы предлагаете брать каждое слово текста и дергать каждый раз БД на принадлежность к keywords?



Офлайн

#4 Март 9, 2010 20:47:25

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Разбиение на keywords

“не дергать базу на нахождения подходящего кейворда” не получится. Придётся дёргать базу за каждое слово.
Единственное, что я бы сделал, как оптимизацию - разбил бы слова по длине в разные таблицы, избавившись от всех заведомо маленьких/больших чем нужно, да и поиск по маленьких таблицах быстрее. А заранее оптимизировать как-то более хитро - нет смысла, я думаю.

Офлайн

#5 Март 9, 2010 20:47:41

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбиение на keywords

а че нет то?)
БД на то и нужна чтобы ее дергать. У меня база была около 2х метров искал я где-то раз по 4*n на каждую фразу, где n число слов во фразе. И ничего, работало очень быстро. Ну мусор типа слов паразитов, союзов междометий можно убрать. Это в самом примитивном варианте.
Если хотите чуть более осмысленного бота (или что там у вас будет?) ) попробуйте посмотреть в сторону цепей Маркова. Это где у вас есть некоторое сочетание (слов-символов) и по нему вы выводите другое сочетание. Часть первого + только что выведенное дает нам новую комбинацию, которую мы снова ищем в базе…(а куда от этого денешься то?) Вот таким образом.
Вообще с этим делом все довольно трудно, есть какой-то хардкорный рускоязычный ресурс в интернете по поводу ботов, поищите если интересно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version