Frage

TL; DR -Zusammenfassung: Ich brauche eine einzelne Befehlszeilenanwendung, mit der ich Synonyme und andere verwandte Wörter abrufen kann. Es muss mehrsprachig sein und die Cross-Plattform für Arbeiten. Kann jemand ein geeignetes Programm für mich vorschlagen oder mir bei denen helfen, die ich bereits gefunden habe? Vielen Dank.


Längere Version:Ich wurde beauftragt, ein System in PHP zu schreiben, das alternative Vorschläge für vom Benutzer eingegebene Wörter erstellen kann. Ich muss eine Thesaurus -Anwendung / API oder ähnliches finden, mit der ich diese Vorschläge generieren kann.

Wichtig ist, dass es mehrsprachig sein muss (Englisch, Dänisch, Französisch und Deutsch). Dies schließt den größten Teil der Software aus, die ich mit Google gefunden habe. Es muss auch plattformübergreifend sein (es muss unter Linux und Windows funktionieren).

Meine Forschung hat mich zu zwei vielversprechenden Kandidaten gelassen: Wordnet und Ruhm.

Ich habe mich bisher auf WordNet konzentriert und es mit dem PHP aufgerufen shell_exec() Funktion, und ich habe es geschafft, es zu verwenden, um eine vielversprechende Prototyp -PHP -Seite zu erstellen, aber bisher nur auf Englisch. Ich kämpfe damit, wie man es mehrsprachig benutzt.

Die WordNet -Site hat externe Links zu WordNet -Projekten in einer anderen Sprache (z. B. Dannet für Dänisch), aber obwohl sie oft WordNet genannt werden, scheinen sie eine Vielzahl von Datenbankformaten und Software zu verwenden, was sie für mich ungeeignet macht. Ich brauche eine konsistente Schnittstelle, die ich von meinem PHP -Programm aufrufen kann.

Aus dieser Perspektive sah der Ruhm vielversprechender aus: Sie bieten Wörterbücher in vielen Sprachen in einem Standard -DB -Format für die eine Anwendung.

Aber der Abfall von Ruhmildern ist, dass es sich in erster Linie um eine GUI-App handelt. Wenn Sie es von der Befehlszeile anrufen, startet die GUI. Es gibt anscheinend eine Befehlszeilenversion (SDCV), aber es scheint ziemlich veraltet (Last Update 2006) und nur für Linux.

Kann mir jemand bei meinen Problemen mit einem dieser Programme helfen? Oder kann jemand eine andere alternative Software oder API vorschlagen, die ich verwenden könnte?

Danke vielmals.

War es hilfreich?

Lösung

Sie können versuchen, die Volltextsuche -Funktionalität von PostgreSQL zu nutzen:

http://www.postgresql.org/docs/9.0/static/textsearch.html

Sie können es mit allen verfügbaren Sprachen und allen möglichen Kollationen konfigurieren, die Ihren Anforderungen entsprechen. PostgreSQL 9.1 fügt eine zusätzliche Zusammenfassung der Funktionen hinzu, die Sie möglicherweise untersuchen möchten, wenn der Ansatz vernünftig erscheint.

Die grundlegenden Schritte wären (für jede Sprache):

  1. Erstellen Sie die benötigte Tabelle (angemessen zusammengestellt). Für unsere Sake reicht eine einzelne Spalte aus, z. B.:

    create table dict_en (
      word text check (word = lower(word)) primary key
    );
    
  2. Abrufen Sie die benötigten Wörterbuch-/Thesaurus-Dateien ab (die von Aspell/Open-Office sollten funktionieren).

  3. Konfigurieren Sie die Textsuche (siehe Link oben, nämlich Abschnitt 12.6) mit den relevanten Dateien.

  4. Fügen Sie das gesamte Wörterbuch in die Tabelle ein. (Sicherlich gibt es irgendwo eine CSV -Datei ...)

  5. Und indexieren Sie schließlich den Vektor, z. B.:

    create index on dict_en using gin (to_tsvector('english', word));
    

Sie können jetzt Abfragen ausführen, die diesen Index verwenden:

-- Find words related to `:word`
select word
from dict_en
where to_tsvector('english', word) @@ plainto_tsquery('english', :word)
and word <> :word;

Möglicherweise müssen Sie für jede Sprache eine separate Datenbank oder ein separates Schema erstellen und ein zusätzliches Feld (TSVector) hinzufügen, wenn Postgres den Ausdruck aufgrund des Sprachparameters ablehnt. (Ich habe die vollständigen Textdokumente vor langer Zeit gelesen). Die Details dazu wären in Abschnitt 12.2, und ich bin sicher, dass Sie wissen, wie Sie die oben genannten anpassen, wenn dies der Fall ist.

Was auch immer die Implementierung beschreibt, ich glaube, der Ansatz sollte funktionieren.

Andere Tipps

Es gibt ein PHP -Beispiel für eine Thesaurus -API -Verwendung hier ...

http://thesaurus.altervista.org/testphp

Erhältlich für Italienisch, Englisch, Französisch, Deutsch, Spanisch und Portugiesisch.

Dies scheint eine Option zu sein, obwohl ich nicht sicher bin, ob es mehrsprachig ist:http://developer.dictionary.com/products/synonyms

Ich habe auch die folgende Site gefunden, die Ihrem Endziel etwas ähnelt. Vielleicht könnten Sie versuchen, den Besitzer zu kontaktieren und ihn zu fragen, wie er es gemacht hat:http://www.synonymlab.com/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top