Поиск в переменной PHP и запись найденного слова

1 234
[Удален]
#31
rereg:
модификатор u "#москв\w#"ui и файл должен быть в utf-8

---------- Добавлено 14.12.2016 в 00:54 ----------

А вообще есть куча либ чтобы привести слово к базовой форме. Тот же phpmorphy

Вау!!! Это работает! Спасибо огромное.

Прикрутил Москву

А за Москвой и всё само прикрутилось

danforth
На сайте с 18.12.2015
Offline
153
#32
rereg:
А вообще есть куча либ чтобы привести слово к базовой форме. Тот же phpmorphy

Нет никакого смысла приводить к базовой форме. Достаточно просто находить дистанцию между словами. Например: Между "Москва" и "Москве" дистанция 1 символ: "а" меняется на "е". Между "Москва" и "Моксва" - 2 символа. Предварительно, можно сделать фонетический разбор слова, есть множество алгоритмов, но не все они подходят под русский, если вкратце, то пропущенное через функцию фонетического разбора слово "Ростов-на-Дону" будет выглядеть где-то так: РСТВНДН, и даже если мы его просклоняем - слово не изменится, т.к. гласные из слова убраны, а если и слово не меняется - значит расстояние между двумя словами будет равно 0 - а это значит точное попадание. Это конечно лучше чем милторговские алгоритмы, но не идеально ввиду того, что если слово напишут "Ростов на дону" (вместо тире - пробелы), то регулярка по тире может не сработать, ну и ещё по мелким косячкам, которые сработают: например город "Обь" и слово "об" пропущенные через функцию фонетического разбора будут выглядеть как "б", что является полным совпадением с точки зрения дистанции между словами.

Я как-то раз писал алгоритм, который учитывал ошибки пользователей в поисковых запросах. Удобно, с учетом автодополнения и автозамены при подтверждении.

Junior Web Developer
[Удален]
#33
danforth:
Нет никакого смысла приводить к базовой форме. Достаточно просто находить дистанцию между словами. Например: Между "Москва" и "Москве" дистанция 1 символ: "а" меняется на "е". Между "Москва" и "Моксва" - 2 символа. Предварительно, можно сделать фонетический разбор слова, есть множество алгоритмов, но не все они подходят под русский, если вкратце, то пропущенное через функцию фонетического разбора слово "Ростов-на-Дону" будет выглядеть где-то так: РСТВНДН, и даже если мы его просклоняем - слово не изменится, т.к. гласные из слова убраны, а если и слово не меняется - значит расстояние между двумя словами будет равно 0 - а это значит точное попадание. Это конечно лучше чем милторговские алгоритмы, но не идеально ввиду того, что если слово напишут "Ростов на дону" (вместо тире - пробелы), то регулярка по тире может не сработать, ну и ещё по мелким косячкам, которые сработают: например город "Обь" и слово "об" пропущенные через функцию фонетического разбора будут выглядеть как "б", что является полным совпадением с точки зрения дистанции между словами.

Я как-то раз писал алгоритм, который учитывал ошибки пользователей в поисковых запросах. Удобно, с учетом автодополнения и автозамены при подтверждении.

Вы слов-постановки задачи написали в 5 раз больше чем рабочая программа которую я написал

И если бы не u - всё бы было готово за час

Кстати. Ростов на Дону через пробелы - у меня работает

---------- Добавлено 14.12.2016 в 02:10 ----------

Вообще. Давным давно. В 2003 году я написал Антиматерильник. Вот то была интересная штука. Надо его найти

---------- Добавлено 14.12.2016 в 03:00 ----------

Нашёл. Вот он:

http://chajnik.ru/antimat

Вот что выдает вместо мата:

бери мой писюль, кончик писюлька

[umka]
На сайте с 25.05.2008
Offline
456
#34
danforth:
и даже если мы его просклоняем - слово не изменится, т.к. гласные из слова убраны

Далеко не все слова и названия городов с выкинутыми гласными будут одинаковы в склонениях.

Химки — в Химках

Жуковский — в Жуковском

Набережные Челны — в Набережных Челнах

danforth:
что если слово напишут "Ростов на дону"

Да, и "Набережные Челны" пишутся именно через пробел, а не через дефис, и это не единственный такой город :)

Лог в помощь!
SeVlad
На сайте с 03.11.2008
Offline
1609
#35
veleg:
Он представил рабочий код,

Серьёзно?🍿

Хотя разве что для 1еуро/час в Мыколайках такое пойдёт.

<?
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
danforth
На сайте с 18.12.2015
Offline
153
#36
umka:
Далеко не все слова и названия городов с выкинутыми гласными будут одинаковы в склонениях.

Да, но дистанция в 1-3 символ - не много. Можно считать, что это искомое слово. Хотя, конечно, нужно брать контекст. Тут все зависит от фонетического разбора: чем он точнее разбирает произношение слов, тем ниже ошибка. Можно звонкие на глухие менять, и гласные не убирать, тогда точность высится. В любом случае, это более точный алгоритм, чем доверится на правильное написание города пользователем.

Вообще интересная темка, я давно хотел написать кое-какую штуку на эту тему: что-то вроде мини-поисковой системы, которая бы оценивала релевантность слова. Но пока руки не доходят, и не уверен что доведу до конца.

P.S. [umka], ваш ник ломает систему быстрого цитирования :)

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий