Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Texte nach Schlüsselworten durchsuchen und kategorisiere

  Alt 31. Mär 2007, 09:55
Zitat von gkoeder:
Zugegebenermaßen trete ich aktuell ein wenig auf der Stelle und weiss nicht so recht, wie ich das obige Problem abbilden kann.
Hi,
auf welcher Stelle trittst Du gerade? Hast Du überhaupt keinen Ansatz? Ist Dir Dein Ansatz nicht schnell genug? ...

Für den Fall, dass Dir nur der generelle Ansatz fehlt, kannst Du immer mit dem einfachsten Fall beginnen. Der besteht sicherlich darin, dass Du für jedes Schlüsselwort prüfst, ob es in einem String vorkommt. Ist dies der Fall, so kennst Du die Kategorie.
Alles was Du dazu brauchst ist dann ein Datentyp, der die Kategorien speichert (z.B. ein Set) und eine Funktion, mit der Du die Position eines SubStrings in einem String ermittelst (z.B. die Delphi Funktion Pos).

Das wär's dann schon. Natürlich gibt es gleich eine einfache Verbesserung, die Du vornehmen kannst, so reicht Dir ein AND oder ein OR oder ein NOT (...) um zu wissen, dass es sich um eine Logische Operation handelt. Kommt mehr als ein solches Schlüsselwort im String vor, so wird dies nichts an dieser Kategorie ändern. Du brauchst also für jede Kategorie nur ein Schlüsselwort finden.
Das entspricht der logischen Oder-Verknüpfung der Überprüfung, ob eines der Schlüsselworte in der Formel ist:

Delphi-Quellcode:
if (Pos('AND', formel) > 0) or
   (Pos('OR', formel) > 0) or
   ....
Dabei wertet Delphi an dieser Stelle Terme nur bei Bedarf aus. Für die Oder-Verknüpfung reicht ein True aus um den Wahrheitswert des Terms zu bestimmen. Ist also die erste Abfrage schon wahr, werden die anderen nicht betrachtet (der Term ist eh wahr). Das gleiche gilt für False und die logische Und-Verknüpfung.
Hier solltest Du also die Abfragen so anordnen, dass die Schlüsselworte, die am häufigsten vorkommen möglichst als erstes geprüft werden.

Nun kannst Du einfach für jede Kategorie eine solche Abfrage durchführen und erhälst die Kategorien.

Weitere Verbesserungen sind sicherlich auch noch möglich (z.B. die Verwendung von FastString, was schnelleres Suchen in Strings ermöglicht).

Gruß Der Unwissende
  Mit Zitat antworten Zitat