Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

1

04.02.2011, 14:52

Gleichheit von Strings bewerten

Hey,
hoffe mir kann hier weiter geholfen werden.
Ich suche ne Möglichkeit die Gleichheit von Strings zu bewerten. Quasi zwei Strings und ich möchte ne Bewertung haben, wie gleich sie sind. Prozentual gesehen oder von mir aus auch nach einem anderen Schema. Das ganze soll mit Java umgesetzt werden. Habe mir sagen lassen, dass es da schon genug fertige Sachen gibt, konnte nur bis jetzt nichts finden. Was schön/wichtig wäre, wäre dass auch Teilstrings als gleich erkannt werden. Heisst es soll nicht nur geguckt werden, wie viele Zeichen an den passenden Stellen gleich sind. Hoffe man kann mich verstehen;) Wie gesagt was fertiges wäre da sehr nützlich. Wenn ihr einfache Ansätze kennt, die trotzdem gut funktionieren postet sie einfach. Zur not würd ichs mir dann selbst basteln. Einfaches Stringmatching hilft mir da bis jetzt weniger weiter.
Lieben Gruß
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

04.02.2011, 15:00

Schon versucht, die equals Methode der String Klasse zu überschreiben?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

CodingCat

1x Contest-Sieger

Beiträge: 420

Beruf: Student (KIT)

  • Private Nachricht senden

3

04.02.2011, 16:07

Ich denke nicht, dass hier irgendein Interesse daran besteht, equals() zu überschreiben. ;)

Zur Eingangsfrage: Klingt, als suchst du sowas wie die Levenshtein-Distanz. Soll das ganze zur Umsetzung einer unscharfen Suche benutzt werden, lohnt sich auch ein Blick in diesen Absatz und ein Blick auf Stemming-Algorithmen.
alphanew.net (last updated 2011-06-26) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

05.02.2011, 16:35

Equals überschreiben hilft mir nicht weiter;) Geht mir ja um das gleichen und nicht darum, dass equals das nicht schon tut:) Die Stemming Methode hört sich grad ganz gut an. Habs aber bis jetzt nur überflogen. Habe gestern mal nen Ansatz über Bigramme versucht. gibt aber nicht so vielversprechende Ergebnisse. Es geht darum, dass Namen von POI's (point of interest) verglichen werden und darüber darauf geschlossen wird, ob es sich um das selbe handelt oder nicht. Von daher glaube ich auch, dass die Levenshtein-Distanz weniger hilft. Hatte da gestern schon was zu gefunden, hörte sich aber für das Problem eher weniger hilfreich an. Naja Stemming wird getestet und falls ihr weitere Ideen habt, immer her damit. Je mehr ich für einen Vergleich zum Ende habe, desto besser:)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

5

05.02.2011, 17:03

vielleicht hilft dir das hier weiter:
http://incubator.apache.org/opennlp/
---> http://sourceforge.net/apps/mediawiki/op…tle=Name_Finder

http://lucene.apache.org/

ps: mmh hab gerade gesehen, dass du tatsächlich was zum vergleichen suchst... die links oben könnten trotzdem weiterhelfen, willst du das ganze einfach nur wegen tippfehlern vergleichen? btw Bei Ortsnamen sollte Stemming nicht unbedingt weiterhelfen...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Chromanoid« (05.02.2011, 17:27)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

6

05.02.2011, 17:13

Mein Fehler, gefährliches Halbwissen und so ;)
Ich hasse Java und kenne es nur aus der Uni ^^
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

7

05.02.2011, 22:20

Wir wärs mit der Levenshtein-Distanz?

EDIT: Uh, übersehen dass das Cat geschrieben hat, na ja, nochmal zur Hervorhebung.

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

08.02.2011, 13:58

Naja für Tippfehler funktioniert der Ansatz über Bigramme den ich umgesetzt hab schon sehr gut und war auch wirklich schnell umzusetzen. Wobei das eh ein Problem ist was glaube ich schwer zu lösen ist. Also es geht nicht darum, dass Tippfehler übersehen werden, sondern darum, dass zwei Sachen die fast gleich heissen auch als gleich erkannt werden. Als Beispiel hat man eine Kirche in zwei Datenbanken. Die Namen sind dort jedoch nicht identisch. Bei der einen könnte ein Leerzeichen mehr drin sein oder zwei Wörter sind vertauscht oder so. Die beiden Kirchen sollen jedoch als gleich erkannt werden. Dies funktioniert soweit auch noch mit dem Bigramm-Ansatz. Wenn ich jetzt jedoch diese Kirche habe und diese zwei ähnliche, aber verschiedene Namen hat, soll diese jedoch auch als eine Kirche erkannt werden. Der zweite Name könnte im Volksmund entstanden sein. Ich habe leider kein passendes Beispiel mit 2 Wörtern auf die sich das beziehen könnte;) Bekomme da hoffentlich die Tage was.
Was ich zur Zeit suche, ist halt etwas was über diese "ein oder zwei Zeichen sind verschieden" Sache hinausgeht. Aber sind ja schon super viele Ansätze genannt worden. Damit hab ich dann ja erstmal zu tun:) Danke Leute
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige