Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Перебор массива на совпадения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Тема интересная по крайней мере для меня!!!
vestmar
Отправлено: 27 Августа, 2014 - 00:57:14
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Ни где в сети не нашёл даже намёка по решение,
в общем:
PHP:
скопировать код в буфер обмена
  1.  
  2. $new_lines = array();
  3. $tmp = file('new_anchors.txt'); // берем файл со строками по тематике купить велосипед в омске, в файле около 300 строк, разных ключей на эту тематику....
  4. foreach ($tmp as $v)
  5. {
  6.             $v = trim($v);
  7.             if (empty($v)) {continue;}
  8.             $new_lines[] = $v;
  9. }
  10.  
  11. $a = "buy velosiped in Omsk"; // допустим, этому ключу надо подобрать максимально похожий из списка выше ключ, "buy velosiped online in Omsk"
  12. $pieces = explode(" ", $a);
  13. print_r ($pieces); // "распиливаем" на ключ-значение в массив каждое слово
  14.  

и тут моя-тупить)
Подкиньте идею этого алгоритма поиска (максимально) схожих ключей из списка, а лучше что бы нашёл 5 максимально схожих и рандомно выбрал из них, только прошу без классов и всяких наворотов если можно) я месяц как учить начал...
 
 Top
tuareg
Отправлено: 27 Августа, 2014 - 08:23:49
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Можно попытаться использовать levenshtein, но придется "заморачиваться" с кодировками, переводить все в анси из утф
 
 Top
vestmar
Отправлено: 27 Августа, 2014 - 10:05:14
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Как раз вчера такое замутил) только с similar_text

PHP:
скопировать код в буфер обмена
  1. foreach ($new_lines as $key => $value)
  2.                 {
  3.                         $level = levenshtein($a, $value);
  4.                         similar_text($a, $value, $percent);
  5.                         $masiv [$percent] = $value;
  6.                 }
  7.                 krsort($masiv);
  8.                 print_r($masiv);

уже хороший результат, но хотелось бы ещё больше проверок, скажем по регуляркам, + проверяет если в искомом списке (в строке) есть 3 слова которые в этом ключе, то +9 к результату, если 2 то +6, если одно .... и т. д., кодировку переводить я думаю не придётся, хочу иметь очень сильный аглоритм определения, возможно со в временем подключить словарь синонимов которые буду указывать скрипту что Buy и Purcashe (эти глаголы) они не так уж и разные...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB