Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск определенной фразы по массиву 
:(
    Опции темы
Ипатьев
Дата 20.10.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Вообще, конечно, 16 лет - это похвально.
Я в 16 лет не пытался написать яндекс smile

Давайте вы расскажете, что вы хотите искать, и где. Безо всяких "Допустим".

PM MAIL   Вверх
Zmiuko
  Дата 20.10.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Да видишь, я не могу найти подобную реализацию нигде. Хотя бы просто фразы сравнивало без учета регистра, но вот как быть с местоположением слов.

Добавлено через 2 минуты и 19 секунд
Мне необходимо в массиве найти значение элемента схожее с искомой фразой без учета регистра и знаков препинаний. Если возможно, то без учета порядка слов в предложении. Все перепробывал, везде что-то упускаю.
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 20.10.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Не хотите описывать реальную задачу? Считаете, что можете описать ее на абстрактном уровне? Хорошо.
Формальное определение "схожести" в студию.


Это сообщение отредактировал(а) Ипатьев - 20.10.2009, 11:06
PM MAIL   Вверх
Zmiuko
  Дата 20.10.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Извиняюсь. До меня дошло: если использовать функцию eregi с паттерном вида слово|слово2|слово3 , то она вернет все значения массива где эти слова есть?

Значит выход возможен только если искомому фразу обратить в массив, также обратить в массив каждый элемент базы и сравнивать уже два массива? 


PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 20.10.2009, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(skyboy @  20.10.2009,  10:52 Найти цитируемый пост)
то есть, тебя устроит, если для запроса "петя любит машу" станет "находиться" фраза "любит любит любит"? о_0 

ну в принципе, полнотекстовый так и работает. вопрос в весах...
PM MAIL   Вверх
Zmiuko
  Дата 20.10.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Формально?

хм.. 

есть массив фраз каких угодно и сколько угодно.
необходима функция, которая осуществляет поиск конкретной фразы несмотря на изменный регистр и порядок слов.

К примеру: ищем фразу красивая Водонапорная башня нашего города

скрипт выдает при осуществлении поиска искомую фразу Башня водонапорная красивая Города Москвы .. несмотря на регистр и порядок слов.

Так должно быть 
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 20.10.2009, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Zmiuko @  20.10.2009,  10:50 Найти цитируемый пост)
Кто как кодит - какая разница-то?

Большая. Ваш "стиль", хе-хе, "программирования" - главная причина того, что вы не можете решить свою задачу. А точнее - даже сформулировать её.
А ещё точнее - пытаетесь решить задачу, не сформулировав её. Как в сказке - "пойди туда, не знаю куда " smile

Цитата(Zmiuko @  20.10.2009,  11:09 Найти цитируемый пост)
искомому фразу обратить в массив, также обратить в массив каждый элемент базы и сравнивать уже два массива? 

ну, элементы базы не обязательно - пхп умеет искать по строкам. а дальше? 
чем это принципиально будет отличаться от поиска регуляркой?

Добавлено @ 11:23
"конкретной фразы несмотря на измененный регистр и порядок слов" - это оксюморон. Если во фразе переставили слова, то это будет уже другая фраза. Тем более, что вы толкуете задачу на самом деле ещё шире - с изъятием слов из фразы.

Не годится определение.

Это сообщение отредактировал(а) Ипатьев - 20.10.2009, 11:25
PM MAIL   Вверх
Zmiuko
Дата 20.10.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Ладно, спасибо за консультацию, сам решу проблему.
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 20.10.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Ой, я невнимательно посмотрел ваш пример. Прошу прощения.
Судя по этому примеру, "построена новая красивая башня" и "упала новая красивая башня" - это одна и та же конкретная фраза. Нет слов. smile
PM MAIL   Вверх
NLspieler
Дата 20.10.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Ипатьев
Дата 20.10.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Это не решение данной задачи, а постановка новой. А автор еще со старой не разобрался smile
PM MAIL   Вверх
NLspieler
Дата 20.10.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(Ипатьев @  20.10.2009,  12:19 Найти цитируемый пост)
Это не решение данной задачи, а постановка новой. А автор еще со старой не разобрался

Ну пускай тогда напишет алгоритм по представленному описанию и будет ему счастье.
PM MAIL   Вверх
Ипатьев
Дата 20.10.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Дело в том, что поисковые алгоритмы -  вещь не до конца, мягко говоря, исследованная. 
И вы оба в своих желаниях заходите на территорию, которую и признанные авторитеты обходят стороной. 
Гугль, к примеру, не берется искать с учетом опечаток. А предлагает сначала исправить. А автор хочет, чтобы поиск понял, что ищущий имел в виду. То есть - контекст. А проблема контекста, кстати сказать - главный камень преткновения при распознавании речи. 
Так что тут далеко не все просто. 
И если бы автор четко сформулировал практическую проблему, которую он хочет решить, то решение нашлось бы. А так единственное, что он получит - это удовольствие от процесса. плюс - возможно - интерес, который побудит его приобрести новые знания, пойти в институт, и в конечном итоге - изобрести то, о чем он тут сейчас писал smile

PM MAIL   Вверх
skyboy
Дата 20.10.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Ипатьев @  20.10.2009,  10:10 Найти цитируемый пост)
ну в принципе, полнотекстовый так и работает. вопрос в весах... 

мне казалось, что запрос "слово1 слово2 слово3" должно находить блоки текста, в которых есть все три слова("И"), а не хотя бы одно("ИЛИ"), если не указано иначе. для "ИЛИ" подойдет и регуляркой(опустим пока вопрос о скорости) "слово1|слово2|слово3", разве нет?

Добавлено через 1 минуту и 22 секунды
Цитата(Zmiuko @  20.10.2009,  10:13 Найти цитируемый пост)
К примеру: ищем фразу красивая Водонапорная башня нашего города
скрипт выдает при осуществлении поиска искомую фразу Башня водонапорная красивая Города Москвы .. несмотря на регистр и порядок слов.

если быть последовательным, то тут на слово "нашего" положен болт.
тогда надо найти и текст, в котором от запроса только слово "города" есть?
PM MAIL   Вверх
Zmiuko
  Дата 20.10.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Очевидно вы не поняли суть проблемы и цели реализации.

Вот, обратите внимание.

Есть фразы в массиве 
"Питаюсь, ем радугу!"
"Ем радугу, сру бабочками" 
"Ем радугу, сру бабочками в кашемировом пальто" 

заходит Вася-пользователь и не зная че внутри находится вводит в поиск фразу еМ радугу бабочками сру

Цель: найти максимально точную морфологически и численно по колличеству слов фразу!

Я пытался при помощи стреммера Поттера, поместив искомую фразу в массив, обработав каждое слово в ней и выделив корень русского языка. Получилось!... Теперь как-то надо сравнить. полученную фразу с элементами массива, дабы вывести максимально схожую.

Думал, что возможно написать маску паттерна, где к примеру корень_слова*+корень_слова*+корень_слова* ищется в каждом элементе некоторое количество корней русских слов в произвольном порядке.

Я никак не могу осилить данную задачу.

Понимаю, что сложная задача, но все же. 

Что касается Гугла - тот морфологию языка в поисковых запросах не производит, да и не поисковик я пишу smile к тому же не в сравнении как-то smile

Добавлено через 11 минут и 55 секунд
Цель такова, сравнить морфологически дефолтовую фразу с обычной фразой... То есть в одной фразу окончаний нету, слова обрезаны, а вторая нормальная.

Поможете?
PM MAIL WWW ICQ Skype Jabber   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.