Christoph Zurnieden: Suchscript: Gewichtung der Fundstellen

Beitrag lesen

Hi,

(1) der Suchbegriff als kompletttes Wort muss besser gewichtet werden als wenn der Suchbegriff nur am Anfang oder Ende eines Wortes steht (Wenn Suchbegriff = "Programm", dann muss die Fundstelle "Programm" besser bewertet werden als "Programmierer" oder als "gramm"

Nunja, Perls Regex kennt "Wort" und "kein Wort", die dürften dafür recht nützlich sein.

nee, Levenstein-Verschiebung wäre da viel besser?

Was ist eine Levenshtein-_Verschiebung_?

Natürlich kann man vorher auf RegExp testen, um die Treffer einzugrenzen.

Wieso eingrenzen? Damit wird nichts eingegrenzt, das ist ein exakter Treffer bzw Fehlschuß. Wenn ein Wort höher gewichtet werden soll, als die Buchstabenfolge in einem Kontext als echte Untermenge, dann liefern Perls Regexp-Konstruktionen "Wort" und "kein Wort" genau das richtige Mittel dazu. Wenn auch nicht zum Finden sondern vorher: zum Suchen. Der Rest ist einfacher Vergleich oder noch besser ein "longest common substring" wenn's eine deutsche oder ähnliche Sprache ist. Komplexere Algorithmen sind bei der vermuteten  überschaubaren Textmenge höchstwahrscheinlich nicht nötig. Anders natürlich beider Gewichtung der so ermittelten Fundstellen an sich, das ist es in diesem Fall wohl eher nötig einen etwas ausgefuchsteren Algorithmus als nur
[latex]
\left(\sqrt{\log\left(\frac{N}{n_t}}\right)\right)\left(\log\left(1+f_t\right)\right)
[/latex][1]
zu benutzen.

so short

Christoph Zurnieden

[1]
N ist die Anzahl der Worte insgesamt
n_t ist die Anzahl des Suchbegriffes in N
f_t ist die Anzahl des Suchbegriffes im lokalem Dokument