kleinerChemiker
Here to stay
|
vorgabe: ich habe in einer tabelle eine textspalte. des weiteren habe ich einen text und würde gerne wissen, ob es eine zeile gibt, in der in der textspalte ein text ist, der dem neuen text ähnlich ist. ist so was möglich?
bei php gibts ja die funktion similar_text, die die ähnlichkeit 2er texte ermittelt. aber ich kann ja nicht die ganze textspalte mir ausgeben lassen und den neuen text mit jedem textfeld aus der db vergleichen.
tia
MIK
Bearbeitet von kleinerChemiker am 02.03.2005, 17:26 (solved)
|
Rektal
Here to stay
|
Auf die schnelle faellt mir mal nur SOUNDEX(str) ein, wenns darum geht das Serverseitig zu machen. Das funktioniert jetzt aber nur mit zwei Woertern (um, eh wie similiar_text, oder?)
|
watchout
Legendundead
|
aber macht das soundex nicht nur mit einem wort? imho schon...
|
gerhardtt
Big d00d
|
vieleicht wärs gut mehr über das problem zu erzählen, denn 2 texte miteinander vergleichen lässt ja 1000 möglichkeiten über.
|
kleinerChemiker
Here to stay
|
es geht darum, daß man für ein online rpg eine chargeschichte als anmeldung schreiben muß. jedoch gibt es viele fertige geschichten im netz zu finden. nun wäre es gut, wenn man herausfinden kann, ob eine neue anmeldung zu einer alten ähnlich ist. z.b. weil nur der charname ausgetauscht uwrde oder andere kleinigkeiten geändert wurden.
|
gerhardtt
Big d00d
|
und diese "vorlagen" sind in einer datenbank gespeichert auf die du zugreifen kannst?
|
kleinerChemiker
Here to stay
|
nicht die vorlagen, aber alle früheren anmeldungen. und ich will wissen, ob eine anmeldung "doppelt" benutzt wird (mit nur geringen abänderungen). vielleicht später mal ein table mit vorlagen, wäre denkbar.
|
Rektal
Here to stay
|
Das klingt mir alles sehr heuristisch
|
kleinerChemiker
Here to stay
|
also nicht möglich. naja, kann man nix machen. thx dennoch
|
atrox
in fairy dust... I trust!
|
Das klingt mir alles sehr heuristisch ![;)](/images/smilies/wink.gif) Für mich klingt es sehr Bayesisch ![;)](/images/smilies/wink.gif) .... oder fuzzy-hash mäßig; ... oder fuzzy text matching... letztere beduetet allerdings, daß man jedes mit jedem vergleichen muß; was quadratischen Aufwand bedeutet.
|
funka
Legend ex-prophet(down below)
|
das sauber zu realisieren ist heutzutage ohne groesseren aufwand kaum moeglich - sauber gemacht geht es in die semantische analyse von texten menschlicher sprache -> hf&gl mein vorschlag einer "einfachen" "aehnlichen" "loesung": word count -> ordnen nach haeufigkeit dann entweder: a) den satz suchen wo die meisten woerter der top-haeufigkeits liste vorkommen - diesen mit der eigenen datenbank vergleichen und (wenn kurz genug) mit google querchecken b) diese haeufigkeits liste in einer form speichern die man leicht abstrahieren kann - oder eine funktion schreiben die gewisse teile des gespeicherten hashes getrennt verarbeiten kann - diesen gespeicherten hash mit datenbank eintraegen vergleichen beides bedarf menschlicher kontrolle und ist ansich ausser coding madness natuerlich nur bloedsinn
|
kleinerChemiker
Here to stay
|
ob die texte gleich sind, wird dann sowieso von menschenauge überprüft. aber um das überprüfen zu können, muß man dem menschen helfen, da er nicht paar hundert texte kennen kann.
aber funkas ausführungen haben mich auf eine idee gebracht. ich ordne die wörter nach häufigkeit und speicher die 10(20) häfuigsten in ihrer reihenfolge in einer tabelle. bei einem neuen text ordne ich sie ebenfalls und suche texte, die die selbe ordnung haben. sollten 2 texte (fast) gleich sein, müßten sie ja die selbe ordnung haben. wenn 2 absolut verschiedene texte dabei sind, ists auch egal, da sowieso ein mensch die anmeldung bearbeitet und das dann ja merkt.
edit: was mir gerade einfällt: habe ich auf diese weise ähnliche texte gefunden, kann ich die ja immer noch mit similar_text() prüfen.
meinungen, ideen, verbesserungsvorschläge?
tia
MIK
Bearbeitet von kleinerChemiker am 20.02.2005, 12:40
|
atrox
in fairy dust... I trust!
|
testhalber mal einen kurierartikel mit dieser methode behandelt. hier die top 25:
2 zum 3 eine 3 einem 3 gegen 3 habe 3 haben 3 ich 3 im 3 mit 3 noch 3 sind 3 wir 4 bei 4 fr 4 wie 4 wil 5 miklautsch 5 oder 6 den 7 der 7 die 7 sie 8 in 9 das 9 nicht
müssen was besseres finden. interessant sind wohl eher die wörter, die nicht in jedem text vorkommen.
|
kleinerChemiker
Here to stay
|
eine liste mit worten die nicht in die reihung miteinbezogen werden. dazu kann ich ja mal für alle anmeldungen nen wordcount machen und dann schaun, ob es worte gibt, die sich eindeutig abheben in ihrer anzahl.
edit: gibts eigentlich eine fertige funktion in php die die verschiedenen worte zählt? string_word_count() mcht ja bischen was anderes.
Bearbeitet von kleinerChemiker am 21.02.2005, 14:29
|
gerhardtt
Big d00d
|
edit: gibts eigentlich eine fertige funktion in php die die verschiedenen worte zählt? string_word_count() mcht ja bischen was anderes. du könntest die beiden wörtermengen disjunkt vereinen und dann schaun was übrig bleibt... edit: könnte ein bisschen langsam werden mit steigender anzahl der texte, aber mit bruteforce kann man ja jedes problem der informatik lösen
Bearbeitet von gerhardtt am 21.02.2005, 15:41
|