Wörter in einem englischen Wörterbuch in Rails validieren?

8

Ich habe einige Google-Suchen durchgeführt, konnte aber nicht finden, wonach ich gesucht habe.

Ich entwickle ein Scrabble-ähnliches Wortspiel in Rails und habe mich gefragt, ob es eine einfache Möglichkeit gibt, zu validieren, was der Spieler im Spiel eingibt. Sie würden das Wort eingeben.

Ist die Validierung gegen eine Art von Englisch-Wörterbuch-Datenbank innerhalb der App am besten gelöst, um dieses Problem zu lösen? Wenn ja, gibt es Bibliotheken, die diese Art von Funktionalität bieten? Wenn nicht, was würden Sie vorschlagen?

Danke für Ihre Hilfe!

    
dartfrog 13.08.2010, 00:32
quelle

2 Antworten

12

Sie brauchen zwei Dinge:

  1. eine Wortliste
  2. irgendein Code

Die Wortliste ist der schwierige Teil. Auf den meisten Unix-Systemen gibt es eine Wortliste unter /usr/share/dict/words oder /usr/dict/words - siehe Ссылка für weitere Details . Der auf meinem Mac hat 234.936 Wörter. Aber es sind nicht alle gültigen Scrabble-Wörter. Sie müssten also irgendwie ein Scrabble-Wörterbuch erwerben, sicherstellen, dass Sie die richtige Lizenz dafür haben, und es so verarbeiten, dass es eine Textdatei ist.

(Update: Die Wortliste für LetterPress ist jetzt open source und auf GitHub verfügbar .)

Der Code ist im einfachen Fall kein Problem. Hier ist ein Skript, das ich gerade ausgetüftelt habe:

%Vor%

Dies wird ausgegeben

%Vor%

Ich überlasse es als eine Übung für den Leser, es zu einem richtigen Wortobjekt zu machen. (Technisch ist es kein Wörterbuch, da es keine Definitionen hat.) Oder eine DAWG anstelle eines Hash zu verwenden, obwohl ein Hash für Ihre Bedürfnisse wahrscheinlich in Ordnung ist.

    
AlexChaffee 13.08.2010 21:39
quelle
2

Ein sprachunabhängiger Ratschlag ist hier, dass wenn Sie nur an der Existenz eines Wortes interessiert sind (was in einem solchen Fall der Fall ist), und Sie planen, die gesamte Datenbank in die Anwendung zu laden (was Ihre Abfrage schlägt vor, dass Sie in Betracht ziehen), dann eine DAWG ermöglicht es Ihnen, die Existenz in O (n) Zeit Komplexität wo n zu überprüfen ist die Größe des Wortes (Dictionary-Größe hat keinen Effekt - insgesamt ist das Nachschlagen im Wesentlichen O (1)), während es eine relativ minimale Struktur in Bezug auf Speicher ist (tatsächlich werden einige Insertionen tatsächlich die Größe der Struktur reduzieren, eine DAWG für "top, tap, taps, tops" hat weniger Knoten als einer für "Tops, tap").

    
Jon Hanna 13.08.2010 00:45
quelle

Tags und Links