Autor Zpráva
Vader
Profil
Ako spraviť to že ak mám slovo "Bratislava"
A text "V Bratislave dnes neprší"
Tak ako na to aby sa označilo slovo "Bratislave", ak je podobné ?
Sir Tom
Profil
Vader:
Nikdy jsem po tom detailně nepátral, ale myslím, že je to za pomoci databáze, kde je slovo a v řádku jsou slova k němu podobná.
Nebo pokud se jedná o typicky domácí slovo je možné jej s použitím gramatických pravidel osekat na předponu, kořen, příponu a koncovku. S těmito "částmi" slova se nadále pracuje - např. slovo prochází pády, skloňuje se a tvoří se tak podobná slova v jiném pádu. Dále se "slovo" může různě ohýbat a tvořit slova odvozená - např. Bratislavský, atd...

Možná, že existuje lepší způsob - nevím...
Vader
Profil
<?
$my_word = 'napísané';
 
$all_wordsa = "Nejaký text bol napísaný v roku 2010...";
$all_words = explode(" ",$all_wordsa);
 
$bestMatch = array('word' => $my_word, 'match' => 0);
 
foreach($all_words as $word) {
    similar_text($word, $my_word, $percent);
    if($percent > $bestMatch['match']) $bestMatch = array('word' => $word, 'match' => $percent);
}
 
if($bestMatch['match'] < 100)
echo str_replace($bestMatch['word'],"<b>".$bestMatch['word']."</b>",$all_wordsa);


Mám toto ale ako to upraviť aby nehľadalo len slovo $my_word = 'napísané'; ale viacero slov ?
Sir Tom
Profil
Vader:
Třeba - slovo "napísané" končí na "é" -> že slovo by mohl být přídavné jméno (případně i jiné slovní útvary), - jelikož je to "é", vypadá to, že se jedná o tvrdé přídavné jméno - u tvrdých přídavných platí to (v češtině - nevím, jaké gramatická pravidla máte ve slovenštině), že místo "é" může být "á" nebo "ý". Stačí tedy vždy tyto písmenka mezi sebou zaměnit a dostanu nové (podobné) slovo.

(Moje myšlenka o automatickém tvoření podobných slov vychází z principu, že každé slovo lze zařadit do nějaké slovního útvaru, který splňuje určitá kritéria. Možná ale uvažuji špatným směrem - třeba existuje nějaká větší databáze podobných slov ke stažení, kterou používají vyhledávače. opravdu nevím, třeba ti poradí někdo zkušenější.)
Vader
Profil
Sir Tom:
Už nič, script už mám, ale hľadá len jedno podobné slovo, ale ako ho upraviť aby hľadal viaceroslov ?
Sir Tom
Profil
Vader:
Podívej - např. na této stránce je automatické skloňování českých slov - podívej se do zdrojáku, abys věděl jak to funguje: http://pteryx.net/sklonovani.html
Vader
Profil
Fajn ale ja už script mám potrebujem len to aby to hľadalo viac podobných slov
etexweb
Profil
Ak nemáš programátorské myslenie tak sa do takýchto vecí nepúštaj, je to hlavne o logike...
Asi takto by to malo vyzerať:
<?
$my_word = 'napísané,2010';
 
$all_wordsa = "Nejaký text bol napísaný v roku 2010...";
$all_words = explode(" ",$all_wordsa);
$EXPLODE =Explode(",", $my_word);
foreach($EXPLODE as $key => $my_word ){
$bestMatch[$key] = array('word' => $my_word, 'match' => 0);
}
$i=0;
foreach($all_words as $word) {
foreach($EXPLODE as $my_word) {
    similar_text($word, $my_word, $percent);
    if($percent > $bestMatch['match']) { $bestMatch[$i] = array('word' => $word, 'match' => $percent); $i++;}
}
}
foreach($bestMatch as $bestMatch){
if($bestMatch['match'] > 50){
$slova[] = $bestMatch['word'];
$bold_slova[] = "<b>".$bestMatch['word']."</b>"; 
}
}

echo str_replace($slova,$bold_slova,$all_wordsa);
Stano
Profil
etexweb:
Niesom si istý či chcel zrovna toto. Lebo toto je len to že pustíš jeho funkciu dva krát s rôznymi slovami. skôr si myslím že chce aby mohol zadávať frázu.

najdi = "dobra večera"
text = "Dnes som mal dobru večeru, ale včera aj keď bol dobrý deň tak večera nebola nič moc."

výsledok:
Dnes som mal dobru večeru, ale včera aj keď bol dobrý deň tak večera nebola nič moc.

Vader:
a riešil by som to tak že by som si zistil koľko slov tam človek zadal
explode(" ", $string);
napr dve slová

a potom ked používaš funkciu
similar_text($word[$i]." ".$word[$i+1], $my_word, $percent);


($word[$i]." ".$word[$i+1] si predtým vyrob niekym cyklom for(),

dúfam že to už zvládneš.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0