![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Вообще, конечно, 16 лет - это похвально.
Я в 16 лет не пытался написать яндекс Давайте вы расскажете, что вы хотите искать, и где. Безо всяких "Допустим". |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Да видишь, я не могу найти подобную реализацию нигде. Хотя бы просто фразы сравнивало без учета регистра, но вот как быть с местоположением слов.
Добавлено через 2 минуты и 19 секунд Мне необходимо в массиве найти значение элемента схожее с искомой фразой без учета регистра и знаков препинаний. Если возможно, то без учета порядка слов в предложении. Все перепробывал, везде что-то упускаю. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Не хотите описывать реальную задачу? Считаете, что можете описать ее на абстрактном уровне? Хорошо.
Формальное определение "схожести" в студию. Это сообщение отредактировал(а) Ипатьев - 20.10.2009, 11:06 |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Извиняюсь. До меня дошло: если использовать функцию eregi с паттерном вида слово|слово2|слово3 , то она вернет все значения массива где эти слова есть?
Значит выход возможен только если искомому фразу обратить в массив, также обратить в массив каждый элемент базы и сравнивать уже два массива? |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
||||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Формально?
хм.. есть массив фраз каких угодно и сколько угодно. необходима функция, которая осуществляет поиск конкретной фразы несмотря на изменный регистр и порядок слов. К примеру: ищем фразу красивая Водонапорная башня нашего города скрипт выдает при осуществлении поиска искомую фразу Башня водонапорная красивая Города Москвы .. несмотря на регистр и порядок слов. Так должно быть |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Большая. Ваш "стиль", хе-хе, "программирования" - главная причина того, что вы не можете решить свою задачу. А точнее - даже сформулировать её. А ещё точнее - пытаетесь решить задачу, не сформулировав её. Как в сказке - "пойди туда, не знаю куда "
ну, элементы базы не обязательно - пхп умеет искать по строкам. а дальше? чем это принципиально будет отличаться от поиска регуляркой? Добавлено @ 11:23 "конкретной фразы несмотря на измененный регистр и порядок слов" - это оксюморон. Если во фразе переставили слова, то это будет уже другая фраза. Тем более, что вы толкуете задачу на самом деле ещё шире - с изъятием слов из фразы. Не годится определение. Это сообщение отредактировал(а) Ипатьев - 20.10.2009, 11:25 |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Ладно, спасибо за консультацию, сам решу проблему.
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Ой, я невнимательно посмотрел ваш пример. Прошу прощения.
Судя по этому примеру, "построена новая красивая башня" и "упала новая красивая башня" - это одна и та же конкретная фраза. Нет слов. |
|||
|
||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
А как же ошибки о опчатки?
"построина новя кросивая башня" должна находить "упала новая красивая башня" Вообще, решение этой не простой задачи представляется мне таким: 1. Индексировать все слова при помощи soundex. Получив таким образом массив: $array[$номер_строки][$номер_слова] = soundex_слова. 2. Получить поисковый запрос. Разделить на слова. Найти soundex для каждого слова. Массив соундексов поискового запроса: $words_soundex[$номер] 3. Пройтись каждым из соуиндексов запроса, по массиву из информации $array. Если обнаружено совпадение, увличить на еденицу значение переменной, соответсвующей номеру строки $sowpadeniya[$номер_строки]++ ; 4. Найти самое большое значение в массиве $sowpadeniya. Выдать номер строки с самым большим количеством совпадений. 5. Дальше сложностей возникнуть не должно. При новом поисковом запросе, повторить начиная со второго пункта. Это сообщение отредактировал(а) NLspieler - 20.10.2009, 12:21 |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Это не решение данной задачи, а постановка новой. А автор еще со старой не разобрался
|
|||
|
||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
||||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Дело в том, что поисковые алгоритмы - вещь не до конца, мягко говоря, исследованная.
И вы оба в своих желаниях заходите на территорию, которую и признанные авторитеты обходят стороной. Гугль, к примеру, не берется искать с учетом опечаток. А предлагает сначала исправить. А автор хочет, чтобы поиск понял, что ищущий имел в виду. То есть - контекст. А проблема контекста, кстати сказать - главный камень преткновения при распознавании речи. Так что тут далеко не все просто. И если бы автор четко сформулировал практическую проблему, которую он хочет решить, то решение нашлось бы. А так единственное, что он получит - это удовольствие от процесса. плюс - возможно - интерес, который побудит его приобрести новые знания, пойти в институт, и в конечном итоге - изобрести то, о чем он тут сейчас писал |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
мне казалось, что запрос "слово1 слово2 слово3" должно находить блоки текста, в которых есть все три слова("И"), а не хотя бы одно("ИЛИ"), если не указано иначе. для "ИЛИ" подойдет и регуляркой(опустим пока вопрос о скорости) "слово1|слово2|слово3", разве нет? Добавлено через 1 минуту и 22 секунды если быть последовательным, то тут на слово "нашего" положен болт. тогда надо найти и текст, в котором от запроса только слово "города" есть? |
|||
|
||||
| Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Очевидно вы не поняли суть проблемы и цели реализации.
Вот, обратите внимание. Есть фразы в массиве "Питаюсь, ем радугу!" "Ем радугу, сру бабочками" "Ем радугу, сру бабочками в кашемировом пальто" заходит Вася-пользователь и не зная че внутри находится вводит в поиск фразу еМ радугу бабочками сру Цель: найти максимально точную морфологически и численно по колличеству слов фразу! Я пытался при помощи стреммера Поттера, поместив искомую фразу в массив, обработав каждое слово в ней и выделив корень русского языка. Получилось!... Теперь как-то надо сравнить. полученную фразу с элементами массива, дабы вывести максимально схожую. Думал, что возможно написать маску паттерна, где к примеру корень_слова*+корень_слова*+корень_слова* ищется в каждом элементе некоторое количество корней русских слов в произвольном порядке. Я никак не могу осилить данную задачу. Понимаю, что сложная задача, но все же. Что касается Гугла - тот морфологию языка в поисковых запросах не производит, да и не поисковик я пишу Добавлено через 11 минут и 55 секунд Цель такова, сравнить морфологически дефолтовую фразу с обычной фразой... То есть в одной фразу окончаний нету, слова обрезаны, а вторая нормальная. Поможете? |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |