Походу только ИИ ? :)

12
CyberX
На сайте с 08.03.2008
Offline
51
1142

Вообще вопрос следующий, есть что-нибудь вроде автоматического распознания слов в тексте и если есть определенные слова(ключи) в базе замена их на ссылки на указанный ключ ?

Сам в шоке от написанного но лучше выразить что-то не получается :(

Шустрый хостинг (http://www.colocat.ru) за нормальные деньги (Москва). 30 дней тестовый период. Рекомендую копирайтера aronskaya (/ru/users/73753). Отличные авторские тексты.
Alexander123456
На сайте с 13.10.2008
Offline
133
#1

Т.е. вам нужно заменить "слово" на "текстоваяссылка"? Это простая задача и должна решаться множеством инструментов, или тут что-то другое?

CyberX
На сайте с 08.03.2008
Offline
51
#2

Alexander123456,

Задача в принципе простая, вот только это надо делать на на Mysql тоесть:

Есть статья в которой встречается к примеру слово "анальгин", а у меня в базе есть отдельная статья на тему анальгин. Так вот нужно чтобы скрипт слово анальгин сделал ссылкой на статью об анальгине. Примерно так.

И соответственно при добавление новых статей про что либо скрипт проходил всю базу и изменял все ранее записанные статьи если в них присутствует ключ на ссылку на статью.

root
На сайте с 04.07.2006
Offline
196
#3

по сути просто:

нужное слово: $slovo

нужен код: $nuzhno

(пример: $nuzhno="<a href=go.php?ref=$slovo>$slovo</a>")

имеем скрипт.

запускаем на проверку по базе текста статей:

читаем $text;

$skolko=substr_count($text,"$slovo");

если слова в статье есть:

if ($skolko>0) {

$addr = strtr($text, "$slovo", "$nuzhno");

};

п.с. если к mysql : то добавляйте сбор инфы с базы и в конце ее запись, это элементарно...

DI
На сайте с 03.01.2007
Offline
123
#4

str_replace


$words = array('анальгин','аспирин','виагра');
$links = array('<a href=#somelink>анальгин</a>','<a href=#otherlink>аспирин</a>','<a href=#someporno>виагра</a>');

$FullTextFromPage = str_replace($words,$keys,$FullTextFromPage);

Это самый примитивный вариант, можно еще прикрутить стемминг и уже делать замену регулярным выражением, чтобы слова "анальгину", "анальгином" тоже полностью становились ссылкой. Насколько я понял, CyberX сам писать ничего не собирается - так что может повезет и придет кто-то с большим желанием поупражняться в кодинге, или с готовой функцией:)

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
CyberX
На сайте с 08.03.2008
Offline
51
#5

root, DenIT, интересные и довольно простые скриптики. Но и за такое решение спасибо. Конечно хочется больше :)

DenIT:
можно еще прикрутить стемминг и уже делать замену регулярным выражением, чтобы слова "анальгину", "анальгином" тоже полностью становились ссылкой.

Ну а это уже будет верх блаженства. :) Сколько может стоить такой проэктик ?

[Удален]
#6
CyberX:
root, DenIT, интересные и довольно простые скриптики. Но и за такое решение спасибо. Конечно хочется больше :)
Ну а это уже будет верх блаженства. :) Сколько может стоить такой проэктик ?

preg_replace вместо str_replace используйте.

$pattern = array ("/(анальгин\S{0,4})/", "/(аспирин\S{0,4})/");
$replace = array ("<a href='ссылка на статью про анальгин'>\\1<\/a>", "<a href='ссылка на статью про аспирин'>\\1<\/a>");
$text = 'Сегодня мы расскажем вам про анальгин и анальгиновые препараты (препараты на основе анальгина)';
$text = preg_replace($pattern, $replace, $text);

На выходе будет что то вроде


Сегодня мы расскажем вам про <a href='ссылка на статью про анальгин'>анальгин</a> и <a href='ссылка на статью про анальгин'>анальгиновые</a> препараты (препараты на основе <a href='ссылка на статью про анальгин'>анальгина</a>

Корень слова - "анальгин", далее может быть 4 непробельных символа (суффиксы всякие там и прочая дребедень, - с приставками предлагаю Вам разобраться самостоятельно, если это необходимо). Главное, чтобы скрипт избавлял Вас от рутинного ручного прописывания ссылок, но если какое то "анальгиновое" слово и не попадет под $pattern - думаю, из 100 ссылок, - одну вы все же сможете прописать вручную :)

Удачи.

So1 добавил 02.12.2008 в 10:06

DenIT:
str_replace

$words = array('анальгин','аспирин','виагра');
$links = array('<a href=#somelink>анальгин</a>','<a href=#otherlink>аспирин</a>','<a href=#someporno>виагра</a>');

$FullTextFromPage = str_replace($words,$keys,$FullTextFromPage);

Это самый примитивный вариант, можно еще прикрутить стемминг и уже делать замену регулярным выражением, чтобы слова "анальгину", "анальгином" тоже полностью становились ссылкой. Насколько я понял, CyberX сам писать ничего не собирается - так что может повезет и придет кто-то с большим желанием поупражняться в кодинге, или с готовой функцией:)

Вы по сути ее уже написали :)

So1 немного подумав добавил

А вообще паттерн может быть и таким

$pattern = "/(\S*анальгин\S*)/";

Под него будет подходить ОЧЕНЬ Много форм слова "анальгин" :) Как-то: "послеанальгиновый", "недоанальгинировать" и т.д. :) Извините за то, что таких слов не существует, а в пытках догадаться, что такое "недоанальгинировать" можно сломать голову - я написал просто ради примера того, что "хавается" этим паттерном :) А кушает он очень много - лыбые не пробельные символы до слова "анальгин" + само слово + любые не пробельные символы после...

CyberX
На сайте с 08.03.2008
Offline
51
#7

Думал что такое возможно только при написании ИИ (так говорил мой прогер), а тут So1, на коленке набросал то что нужно :) So1, огромное вам спасибо. Безусловно + (хоть у меня он ещё маленький :)). О большем не мог мечтать простой юЗверь.

[Удален]
#8

Не за что.

Всю необходимую информацию можно найти в интернете (по части синтаксиса тех же регулярных выражений, например). Функции php - php.net.

SJ
На сайте с 16.03.2008
Offline
78
#9
CyberX:
Думал что такое возможно только при написании ИИ (так говорил мой прогер)

А вы уверены, что это прогер, а не уборщица, например?

Потому как называть программистом человека, который даже не регекспами, а просто "в лоб" замену в тексте одной строки на другую сделать не может... 😮

Любимый хостинг (http://beget.ru?id=2902) How can we grow old when the soundtrack of our lives is rock-n-roll?
T.R.O.N
На сайте с 18.05.2004
Offline
314
#10

CyberX,

Ваш прогер, или слишком заумный или хотел просто денег.

В прогрммке So1 нет тольок одного, варианта, когда слова встречаются в разных временах/падежах/лицах. Но это уже совсем иная история.

И еще, если не хотите чтобы Ваш сайт не попал под санкции, измените чуть программку так, чтобы ссылка на странице по каждому слову была только одна. Т.е. сколько бы не встречалось раз слово аспирин, ссылкой должно стать только одно, чаще всего первое.

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
12

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