Thesaurus

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Niederb.
User
Beiträge: 5
Registriert: Montag 13. Juni 2011, 21:45
Wohnort: Freienbach, Schweiz
Kontaktdaten:

Hallo zusammen

Ich bin auf der Suche nach einer Deutschen Thesaurus Anbindung in Python und konnte bis jetzt nichts finden.
Die entsprechenden Daten gibt es scheinbar bei openthesaurus. http://www.openthesaurus.de/
Ich bräuchte aber eine Anbindung der Daten direkt über das Datenfile, weil ich sehr viele Anfragen abarbeiten muss. (also kein Aufruf via Webservice/XML/URL)
Im Natural language toolkit gibt es scheinbar auch nichts in Deutsch. http://www.nltk.org/

Hat jemand schon mal so etwas gefunden/programmiert?
Sonst mach ich es dann selbst, aber man muss ja nicht immer alles neu erfinden.
Oder kennt jemand alternativen zu openthesaurus?

Danke & Gruss
Niederb.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du könntest einfach den Thesaurus bei http://www.openthesaurus.de/ runterladen ;-)
Das Leben ist wie ein Tennisball.
Niederb.
User
Beiträge: 5
Registriert: Montag 13. Juni 2011, 21:45
Wohnort: Freienbach, Schweiz
Kontaktdaten:

Ja, das ist mir klar. Aber Danke trotzdem.
Die Frage war mehr ob jemand bereits eine fix-fertige Anbindung/API entwickelt hat.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Niederb. hat geschrieben:Die Frage war mehr ob jemand bereits eine fix-fertige Anbindung/API entwickelt hat.
Braucht man das denn? Die Daten liegen in mehreren Formaten vor, zum Beispiel auch als CSV-artige Plaintext-Datei und als MySql-Dump. In beiden Fällen kann man da doch mit Standardwerkzeugen drauf zugreifen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

nezzcarth hat geschrieben: Braucht man das denn? Die Daten liegen in mehreren Formaten vor, zum Beispiel auch als CSV-artige Plaintext-Datei und als MySql-Dump. In beiden Fällen kann man da doch mit Standardwerkzeugen drauf zugreifen.
Vielleicht für mobile Plattformen, wo sowohl der Speicherplatz begrenzt ist oder aber das Downloadvolumen eine Rolle spielen? Vielleicht sind das mittlerweile auch keine Kriterien mehr - ich lebe (noch) in einer Smartphone freien Zone :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hyperion hat geschrieben:Vielleicht für mobile Plattformen, wo sowohl der Speicherplatz begrenzt ist oder aber das Downloadvolumen eine Rolle spielen? Vielleicht sind das mittlerweile auch keine Kriterien mehr - ich lebe (noch) in einer Smartphone freien Zone :-D
Sei versichert, dass ein heutiges Smartphone kein Problem mit mit 0,52 MB an Daten hat :)

Was das API angeht, dort wird doch sehr genau beschrieben, dass man z.B. mit http://www.openthesaurus.de/synonyme/se ... ation/json nach einem JSON-Dokument fragen kann, welches neben einer merkwürdigen Warnung und einem Copyright-Hinweis zu "programmieren" dann dies liefert:

Code: Alles auswählen

{"synsets":[
  {"id":888,"categories":[],"terms":[{"term":"codieren"},{"term":"implementieren"},{"term":"programmieren"}]}
]}
Also z.B. (ohne Fehlerbehandlung):

Code: Alles auswählen

import urllib, urllib2, json

def get_synonyms(term):
    d = json.load(urllib2.urlopen("http://www.openthesaurus.de/synonyme/search?q=%s&format=application/json" % urllib.quote(term)))
    return [o["term"] for o in d["synsets"][0]["terms"]]
   
print get_synonyms(u"programmieren")
Stefan
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

sma hat geschrieben: Sei versichert, dass ein heutiges Smartphone kein Problem mit mit 0,52 MB an Daten hat :)
Hehe... ich mutmaßte ja auch nur - und die Größe hatte ich mir auch nicht angeguckt ;-)

Ich konnte nicht widerstehen und hab Dein Script mal mit Hilfe des Requests-Moduls umgesetzt:

Code: Alles auswählen

import json, requests

def get_synonyms(term):
    d = json.loads(requests.get("http://www.openthesaurus.de/synonyme/search",
                                params={"q": term, "format": "application/json"}).text)
    return [o["term"] for o in d["synsets"][0]["terms"]]

get_synonyms("programmieren")
Da mir dieses Modul in letzter zeit häufiger namentlich über den Weg lief, hat es mich mal gereizt es anzutesten. Ich mag dieses ganze "urllib"-Konglomerat in Python2 einfach nicht...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

@Hyperion & sma: Ich habe:
Niederb. hat geschrieben: Ich bräuchte aber eine Anbindung der Daten direkt über das Datenfile, weil ich sehr viele Anfragen abarbeiten muss. (also kein Aufruf via Webservice/XML/URL)
so verstanden, dass er tatsächlich lieber mit einer lokalen Datein arbeiten möchte. Aber wie auch immer, jetzt kann er es sich aussuchen ;)
Niederb.
User
Beiträge: 5
Registriert: Montag 13. Juni 2011, 21:45
Wohnort: Freienbach, Schweiz
Kontaktdaten:

Ja, ich brauche in der Tat eine Implementation welche direkt mit dem Datenfile arbeitet.

Da es scheinbar noch nichts entsprechendes gibt, werde ich selber eine kleine API entwickeln.
Falls es etwas wird werde ich dann meine Implementation hier posten, falls jemand mal danach suchen sollte.

Gruss
Niederb.
Antworten