Při programování (zvyšování efektivity) Keywords Generátoru mě napadla delikátní věc
, zařadit k němu i vyhladávání synonym a implementovat ohýbání slov. Jenže jak to udělat, žádný česlý free slovník podobného rázu podle pana Gůgla neexistuje a vyrabět vlastní by bylo nad mé češtinářské síly
. Ale když už jsem si to umanul, tak jsem to prostě musel mít. Nakonec mě trklo jak na to a musim říct nepotřeboval jsem k tomu žádne složité konstrukce. Stačilo trocha regulárních vyrázů, práce s polem, vyhledávač www.jyxo.cz a jsou z toho dvě celkem šikovné funkce
.
Funkce už zase funguji chyba by měla být vyřešena. Jen chci upozornit na to, že synonyma a ohýbání slov by bylo dobré cachovat, jelikož při větším počtu slov je neunosne pokaždé ziskávat fraze.
Nejprvé kód, vysvětlím zaokamžik.
function vratSynonyma($slovo, $cp)
{
$slovo = trim($slovo);
$cont = file_get_contents('http://jyxo.cz/s?q=' . urlencode(iconv($cp, 'UTF-8', $slovo)) . '&d=cz');
$cont = iconv('UTF-8', $cp, $cont);
$cont = strip_tags($cont, '<br>');
$reg = 'Synonyma'.$slovo.': (.+)(, \(vše\))?<br><br>';
preg_match_all("!$reg!", $cont, $arrSyn);
$arrSynonyma = explode(',', $arrSyn[1][0]);
$arrSynonyma = array_map('trim', $arrSynonyma);
if($arrSynonyma[count($arrSynonyma)-1]=="(vše)"){
unset($arrSynonyma[count($arrSynonyma)-1]);
}
return $arrSynonyma;
}
Tato funkce pracuje na principu toho, že z www.jyxo.cz stáhné stránku s vyhledávaným slovem (když si v jyxu necháte cokoliv vyhledat, v pravém sloupci máte vyčet synonym a ohýbání slova). Jako vstupní hodnota je slovo, ke kterému hledáme synonyma a jako druhá hodnota je kodování vašeho scriptu. Vrací pole hodnot. Pomoci regulárního výrazu vyjmu jen potřebnou část, kterou pak rozdělím podle čárek. Za zmínku stojí funkce array_map, tato funkce aplikuje na všechny prvky pole uvedené v 2 parametru funkci uvedenou v parametru 1.
Pozn.: Zakomentovaný řadek odkomentujte v případě toho, že máte stránku v jiném kódování než UTF-8 a na místo požadovaného CP napište vaše kódování.
function ohybejSlovo($slovo, $cp)
{
$slovo = trim($slovo);
$cont = file_get_contents('http://jyxo.cz/s?q=' . urlencode(iconv($cp, 'UTF-8', $slovo)) . '&d=cz');
$cont = iconv('UTF-8', $cp, $cont);
$cont = strip_tags($cont);
$reg = 'Ohýbání(.+): (.+)\. ';
preg_match_all("!$reg!", $cont, $arrSyn);
$arrSynonyma = explode(',', $arrSyn[2][0]);
$arrSynonyma = array_map('trim', $arrSynonyma);
return $arrSynonyma;
}
Pro tuto funkci platí úplně to samé, co pro funkci první s tím rozdílem, že je jiný regulární výraz.
Funkce můžete vyzkoušet na adrese
http://scripty.jur4.net/synonyma-ohybani/.
Pokud chcete zadat vlastni slovo použijte adresu
http://scripty.jur4.net/synonyma-ohybani/?slovo=vaseslovo,
defaultně je nastaveno slovo lampa
P.S. Funkce nebudou fungovat bez přistupu k netu. Pak by pravděpodobně funkce file_get_contents vratila chybu.
Líbí se ti text? Ano / Ne Dej mi o tom vědět! Nebo si jej můžeš zalinkovat! linkuj.cz / del.icio.us. Pokud chceš ještě něco víc, můžeš si text vytisknout, exportovat do PDF nebo na tento text upozornit e-mailem. Dále si ještě můžeš stáhnou RSS jeho komentářů, popřípadě ho i komentovat.
Konecne prvni clovek co dovede nejco i bez googlu!!
Dobry to je ten kod ,zabere to cas ale super a diky za moznost stahnuti….! ![]()
[1] czech-kid : Ono to s googlem ani nejde, protože u něj není výpis synonym a ohýbání slov. Ono to prakticky nejde s jinym vyhledavacem nez s jyxem.
A ja davam na stahnuti vsechny scripty. ![]()
[3] QuickShare : Nenudim, ale je to nutna funkce pro generovani keywords z textu. ![]()
Jen jako přiklad co mě napadlo, vyhledavani → kdyz vyhledavas tak vratis relevantnejsi vysledky diky tomu ze pridas synonyma a sklonovani.
ech mekna sranda myslim, ze by to mala dost praktickeho vyuzitia ![]()
[7] stfu : V to doufam, jen jsem zjistil ze pri vetsim poctu slov, je to dost pomale.
Asi budu muset vymyslet cacheovani. Nejspiš do databaze, nebo xml. Ale u xml bych zas musel resit atomicitu operaci, takze nevim co bude lepsi.
[10] Pampuch : Kupříkladu při vyhledávání. Uživatel zada slovo „dům“ a ty vezmeš a vyhledaš všechny texty kde je dům + zjistiš jeho synonyma a vyhledáš i to myslim, že takhle by bylo vyhledávání na mnoha stránkách dokonalejší.
[10] Pampuch : ano Jur4 to vystihol spravne najpraktickejsim pouzitim vyhladavanie
[11] Jiří Petřek : Ale co když uživatel zadá do vyhledávání slovo domům ?? A když zadává třeba slovotvorný základ z toho skloňování tak v DB použijeme pouze základ toho slova ne??
Využití na vyhledávání je zajímavé. Jen ještě vyřešit to cachování ![]()
[14] Mazlo : S tim je trochu problem. Neprisel jsem na to jak vyresit zavislosti, abych neukládl redudantní data. Protože mužu pro každe slovo vytvořit soubor s jeho synonymy, ale to potom budu mit synonyma i pro kazdy sklon slova, a to jsou data na vic.
Sry spolu s tunami spamu jsem smaznul i dva komentare, od error414 a svuj. Jednalo se o tak jak řešit cacheovani. To jen pro uplnost.