einicher.net

The Code must do the talking.

Deutschsprachiger Wortstamm-Index

24. Dezember 2018
Allgemein

Heute habe ich die komplette deutschsprachige Datenbank von Wictionary heruntergeladen und schreibe mir einen einfachen, feinen, kleinen Parser in node, der mir daraus einen Wortstamm-Index der deutschen Sprache als MySQL-Tabelle macht.

Ich habe ja seit einiger Zeit ein Daten-Projekt: furt.at wo ich Daten sammle und aufbereite. So gibt es dort zum Beispiel die wahl.furt.at, wo ich zentral alle Wahlergebnisse Österreichs darstellen will. Ziel ist es dort Macht sichtbar zu machen, in einer Demokratie ist die nämlich oft nicht so offensichtlich.

Es gibt dort auch die news.furt.at, eine Plattform, die Artikel der Medien unseres Landes einsaugt. Dort will ich mehrere spannende Dinge entwickeln: ursprünglich wollte ich einen Algorithmus, der ähnlich wie Google News erkennt welche Artikel zum selben Thema gehören und auch wie Facebook beobachtet was ich mir anschau und dann aus der Fülle an Artikeln heraus vorschlägt was mich interessieren könnte. Das ganze sollte so klug werden, dass das Ding mich sofort informiert, wenn ein für mich interessanter Artikel gefunden wurde. Das Ding liefert mir zum Beispiel auch alles, wo die Grünen erwähnt werden, sodass ich immer gleich weiß, welchen Topfen die Medien grad wieder über uns verzapfen.

Bisher hab ich das mit Volltext-Suchen gemacht, was aber sehr bald nicht mehr ging, weil schon nach zwei Jahren 2 Millionen Artikel zusammenkamen und ich so extrem viel Rechen-Leistung brauche. Bei meiner Arbeit mit Magento hab ich kürzlich die ganze Datenbank-Struktur kapieren müssen und bin dabei über den Indexer für die Filter und Suche gestolpert. Dabei wird jedes Wort indexiert und nur mehr die ID der einzelnen Wörter referenziert. Jedes Wort kriegt also eine Nummer, und das System arbeitet mit der Zahl, nicht mehr mit dem Text. Das hat mich auf eine Idee gebracht die ich jetzt gerade austeste:

Anstatt nach Wörtern im Volltext zu suchen, erkenn ich in den Artikeln die Wörter, schau zu welchem Wortstamm sie gehören und speichere nur mehr die Nummer der Wortstämme pro Artikel ab. Das könnte soweit gehen, dass ich sogar die Tippfehler zu den Wortstämmen dazutu und nur mehr die Nummer eines Wortes finden muss und dann alle Artikel krieg die diese Nummer auch haben. Dazu brauch ich jetzt aber eine riesige Datenbank mit den ganzen Wortstämmen (im Deutschen ca 280.000 Wörter).

Damit der Algorithmus erkennt was mich interessiert muss er von allen Artikeln die ich anklicke nämlich alle Signalwörter speichern. Je öfter gewisse Wörter vorkommen umso wichtiger sind die für mich. Er muss also Punkte vergeben. Jedes mal wenn ich einen Artikel anschau kriegen alle Signalwörter daraus bei mir einen Punkt, wenn ich den Artikel abspeichere sogar fünf Punkte.

Jedesmal wenn ein neuer Artikel reinkommt müssten dessen Wörter dann gegen meine Signalwörter geprüft werden und je mehr Wörter in dem Artikel sind die bei mir eine hohe Punktzahl haben umso wichtiger ist für mich dieser Artikel.

Am Ende habe ich dann eventuell eine sehr einfache, aber schnelle Suchfunktion mit der ich trotz geringer Leistung große Datenmengen in sehr kurzer Zeit durchklauben kann.

Weil ich gefragt wurde was ich eigentlich in meiner Freizeit mache, was mir wirklich Spaß macht und warum ich keine Zeit für sportliche Aktivitäten habe.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.