Vermeidung redundanter Daten - Ideen gesucht!

ByteHunter

Cadet 4th Year
Dabei seit
Mai 2006
Beiträge
108
Hallo Community,

ich arbeite derzeit an einem firmeninternen Programm zur Speicherung von Wissen. Dieses Programm besitzt eine direkte Anbindung an eine MySQL Datenbank. Inzwischen ist das Programm sehr ausgereift und die Datenbestände wachsen und wachsen.

Nun steh ich vor neuen Herrausforderungen und zwar vor der Vermeidung doppelten Wissens. Das Wissen wird in sogenannten "Informationskarten" gepsiechert. Jede dieser Karten besitzt eine ID, Autor, Datum ... und einen Text (ähnlich wie bei Wikipedia)! Jeder Nutzer hat die Möglichkeit Einträge zu verfassen und selbst einen Text zu verfassen. Jeder Eintrag ist dann noch Kategorien zugeordnet um besser danach suchen zu können!

Das Problem ist jetzt wie kann ich halbwegs präzise doppelte Einträge herrausfischen? Es kommt vor, dass zwei Einträge unterschiedliche Syntax haben aber im prinzip das gleiche gemeint ist! Ich habe schon ein paar verschiedene Skripte geschrieben die Syntax vergleichen aber die Ergebnissen waren nicht zufriedenstellend (Treffsicherheit lag bei <= 10%)

Vielleicht hat jemand von euch schonmal vor einem ähnlichen Problem gestanden oder ihr habt andere Ideen wie ich eine relativ hohe Treffsicherheit erreichen kann. Ich weiß jetzt schon das es da keine 100 prozentige Lösung gibt!

Danke schonmal im voraus!
 
Zuletzt bearbeitet:
Wäre nicht falsch uns mal einen Beispieldatensatz zu zeigen, evtl auch zwei, und inwiefern die dann "identisch" sind...
 
Ich bin kein Spezialist auf dem Gebiet, aber vielleicht kann ich einen Denkanstoß liefern:

Du könntest den Benutzer Stichwörter angeben lassen, die den Text charakterisieren. Vielleicht via Auswahlmöglichkeit die Kategorien vorgeben (soviele wie möglich) und dann mittels freier Eingabe die eigentlichen Stichwörter. Damit könntest dem Benutzer bei der Eingabe schon ähnliche Texte anzeigen und er entscheidet selber, ob sein Beitrag neu ist oder nicht.

Positiver Nebeneffekt: Suchen und Kategorisieren wird vereinfacht
Nachteile: Je nachdem wie weitläufig Dein Wissengebiet ist und wie genau es die Benutzer nehmen wird das besser oder schlechter funktionieren.
Deine bereits vorhandenen Datenberge müssten angepasst werden (oder Du könntest auch nur mit den Stichwörtern Volltextsuche betreiben - wenn die Datenmenge das zulässt)

IMO lebt so ein System von Verknüpfungen innerhalb der Daten und von Benutzern, die unterstützend eingreifen.

hth, ZanyGolfer
 
Hier mal ein vereinfachtes Beispiel im Editor geschrieben. Musste ein Bild posten da CB die Formatierung nicht erkennt!



Sind natürlich noch mehr Spalten aber die drei sind die wichtigsten!

E:
@ZanyGolfer:
Jedem Nutzer kann der ICard (Informationcard) bereits vorgefertigte Kategorien zuweisen. Schlagwörter können ebenfalls mit angegeen werden. Die befinden sich aber mit im eigentlichen Text! Aber eine Suche die ausschließlich nach Kategorien und Schlagwörtern sucht ist zu ungenau!

Als Beispiel:
Es gibt eine Kategorie Names "J2EE"! Fast alle ICards die dieser Kategorie zugeordnet sind haben mind. einmal das wort "J2EE" im Text aber halt mit vollkommen unterschiedlichen Inhalt! Wenn ich also eine neue ICard anlegen will die das Wort "J2EE" enthält, würde mir die Schlagwortsuche fast alle Einträge der Kategorie zurückliefern mit der Beründung: Verdacht auf doppelte Einträge!
Und das ist viel zu ungenau!
 
Zuletzt bearbeitet:
Natürlich mit mehreren Stichworten, aber die Idee von ZanyGolfer dürfte am schnellsten zu realisieren sein und dabei gute Ergebnisse bringen. Denn den Inhalt zu erkennen, bzw den Sinn eines Textes zu verstehen, das wird "etwas" schwieriger (das grenzt an KI).

Tipp: In
Code:
-Tags wird die Formatierung beibehalten.
 
wenn du dafür noch budget hast kannst du das ganze auch von einem Plattensubsystem erledigen lassen.

Wenn ich mich richtig erinnere gibt es da eine relativ fähige Appliance von Adic-Quantum die auf Binärebene arbeitet und dort quasi "Stückchen" die auf binärebene gleich sind dedubliziert. Das macht vielleicht bei ner großen Datenbank Sinn. Vvielleicht habt ihr sowas auch schon im Unternehmen. Wenn ihr da ne AS/400 und Oracle laufen habt ist das garnicht so unwahrscheinlich

Einfach die Datenbank Files aufs Plattensubsystem legen und der Rest sollte von alleine passieren

gruß Roi


edit: Data-Domain hat sowas glaub ich auch. EMC arbeitet meines Wissens auf File-Ebene und ist daher für sowas eher unbrauchbar.

edit2: ansonsten gibt es noch die Moeglichkeit die Texte ins Filesystemn zu speichern. Unter Linux/Unix gibt es eine Funktion / OpenSource Tool die alle gleichen Dateien / Texte durch Links ersetzt und so "Software Dedublication" macht (hab leider den Namen vergessen)

so koenntes du dir ein programm schreiben was dann nurnoch die Textbausteine verwaltet, in welcher Reihenfolge die zusammen hängen usw und dann von einem Link auf den nächsten zeigt
 
Zuletzt bearbeitet:
@Backslash:
Danke - auf das mit dem code Tags hätt ich auch kommen können :D

Ich werde mal einen neuen Versuch starten. Diesmal werde ich eine Art extra Indextabelle erstellen die jeder ICard eindeutige Stichwörter zuordnet. Das wird sicher einer höhere Trefferquote bringen als ich bisher erziehtl habe!

Dann ist nur noch das Problem: Was mach ich mit den Daten die schon da sind? Die kann ich nur per Algorithmus indizieren und einfach die Kategorien in den Index schreiben. Per Hand wäre zu aufwändig bei mehr als 1000 Eiträgen!

edit:
@roi:
Wenn ihr da ne AS/400 und Oracle laufen habt ist das garnicht so unwahrscheinlich
Das AS/400 hat nichts mit unserer Firma zu tun! Wir sind ein IT-Dienstleistungsunternehmen die Support für ERP Systeme liefern!

Die Wissensdatenbank läuft ausschließlich auf Datenbank Ebene (MySQL Server)! Und ich hab ehrlich gesagt nicht vor daran was zu ändern! Trotzdem danke für deinen Vorschlag!
 
Zuletzt bearbeitet:
wenn du die Indextabelle erstellt hast, koenntest du die Inhalte der vorhandenen ICards einfach nach diesen Stichworten oder besser Stichtwortkombinationen durchsuchen und dann automatisch Indizieren.

mit like AND like AND .... sollte das kein Problem darstellen es gibt bei Oracle auch die Mengenfunktionen Union und Intersect usw mit denen du ziehmlich komfortabel "Mengen" vergleichen kannst schau dir die mal an, vielleicht helfen die dir weiter.

gruß Roi
 
Werbebanner
Zurück
Top