Autor | Zpráva | ||
---|---|---|---|
Vader Profil |
#1 · Zasláno: 16. 8. 2011, 15:59:21
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 |
#2 · Zasláno: 16. 8. 2011, 16:40:44
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 |
#3 · Zasláno: 16. 8. 2011, 16:46:36 · Upravil/a: Vader
<? $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 |
#4 · Zasláno: 16. 8. 2011, 16:51:00 · Upravil/a: Sir Tom
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 |
#5 · Zasláno: 16. 8. 2011, 16:58:35 · Upravil/a: Vader
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 |
#6 · Zasláno: 16. 8. 2011, 17:03:52
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 |
#7 · Zasláno: 16. 8. 2011, 17:06:05
Fajn ale ja už script mám potrebujem len to aby to hľadalo viac podobných slov
|
||
etexweb Profil |
#8 · Zasláno: 16. 8. 2011, 17:15:36
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 |
#9 · Zasláno: 16. 8. 2011, 19:26:18 · Upravil/a: Stano
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); 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š. |
||
Časová prodleva: 14 let
|
0