Uebersetzungshelfer

Du hast eine Idee für ein Projekt?
Antworten
le_bub
User
Beiträge: 8
Registriert: Donnerstag 13. September 2007, 12:22

Meine Idee waere ein Programm, dass ein Online Woerterbuch (wie z.B. leo.org oder slovnik.seznam.cz o.Ae.) automatisch bedient.
Aus einem eingegebenen oder geladenen Text sollen zunaechst in mehreren Stufen Satzzeichen, Numerale und doppelt vorkommende Woerter rausgefiltert werden, danach noch Woerter, die uebersetzt werden muessen (Personal-, Possesiv, Demonstrativpronomen und Fuellwoerter).

Eine weitere Aufgliederung der verbleibenden Woerter erscheint mir ob der komplexitaet des Deutschen Deklinations- und Konjugationssystems fast unmoeglich. Sinnvoll waere es allerdings, die Woerter ihrer Laenge nach zu Ordnen und auch dem Benutzer die Moeglichgkeit zu geben, unbekannte Woerter zu selektieren o. Ae.
Oder auch von gebeugten Formen die Grundform einzugeben.

Danach sollen die Woerter der Reihe nach an ein Online Woerterbuch geschickt werden, wo danach die ersten x Ergebnisse extrahiert und in eine Textdatei gespeichert werden.

Es ginge mir bei der ganzen Angelegenheit vor allem um die automatische Abarbeitung der Wortliste, nicht um Geschwindigkeit, d.h die einzelnen Woerter werden in Intervallen an das Woerterbuch geschickt, die dem manuellen Eintragen nahekommen, so dass nicht der Vorwurf einer DoS-Attacke o. Ae. kommt.

Was denkt ihr? Macht das Sinn? Der Vorteil waere, dass man schon bevor man mit der Uebersetzung beginnt, eine Liste von uebersetzten Woertern hat, und dann zuegiger voranschreiten kann.

Gruss,

bub
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

le_bub hat geschrieben:Meine Idee waere ein Programm, dass ein Online Woerterbuch (wie z.B. leo.org oder slovnik.seznam.cz o.Ae.) automatisch bedient.
Hallo bub!

Die Idee an sich ist ja nicht schlecht. Aber ich würde vorher ein lokal installiertes Wörterbuch zur Übersetzung heran ziehen und nur die Wörter, die nicht vom lokalen Wörterbuch übersetzt werden konnten übers Internet schicken. Das schont die Ressourcen der Onlinewörterbücher (spart den Betreibern Kosten) und sollte für dich keinen Unterschied machen.

Stichwörter für lokale Wörterbücher:
- libtranslate http://www.nongnu.org/libtranslate/
- tranlate http://packages.debian.org/unstable/text/translate
- ding http://www-user.tu-chemnitz.de/~fri/ding/
- ispell http://www.gnu.org/software/ispell/ispell.html
- aspell http://aspell.net/ http://aspell.net/win32/

Hier z.B. http://www.woerterbuch.info/tipps.php wird auch eine XML-Schnittstelle oder ein Java-Script-Plugin angesprochen. Der Quellcode dieser Implementierungen dürfte recht interessant sein.
So etwas gibt es sicher auch für andere Online-Wörterbücher. Ich würde einfach mit den Betreibern reden und fragen ob du das darfst und ob es dafür schon eine Schnittstelle gibt.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Hab sowas für mein aktuelles Projekt geschrieben, was automatisch den Google Translator nach Hilfe fragt. Da es für nen Projekt ist ist es - wie das restliche Projekt auch - GPL
Ist eigentlich relativ simple sowas zu schreiben. Musst dir nur bewusst sein was er sendet und wo die Antwort steht. Dann klappet

Code: Alles auswählen

#! /usr/bin/python
# -*- coding:utf-8 -*-

#    Google Translator API
#    Copyright (C) 2007  by Tobias "SigMA" Sauer
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; version 2 of the License only
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA

__doc__ == """Google Translator API
GT-API greift auf den Google Translator zu
und erstellt eine Übersetztung für einen String
"""

import urllib
import re

class AppURLopener(urllib.FancyURLopener):
    version = "Opera/9.23"

urllib._urlopener = AppURLopener()

def google_translate(text, von="de", zu="en"):
    params = urllib.urlencode({'text':text,'langpair':von+"|"+zu, "ie":"UTF8"})
    f = urllib.urlopen("http://translate.google.com/translate_t", params)
    result = re.compile("<div id=result.*?</div>", re.IGNORECASE).search(f.read()).group()
    x = re.compile("<div .*?>", re.IGNORECASE).search(result).group()
    result = result.replace(x, "").replace("</div>","")
    
    return result
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
poker
User
Beiträge: 146
Registriert: Donnerstag 20. September 2007, 21:44

SigMA hat geschrieben:Da es für nen Projekt ist ist es - wie das restliche Projekt auch - GPL
Ist eigentlich relativ simple sowas zu schreiben.
Also am besten den unter der GPL gestellten Trivialcode nicht weiter anschauen und selber sniffen was der `Google Translator` ausspuckt...und dann kann man es unter BSD stellen? Kein Problem. Höchstens 10-30 Minuten arbeit :)

Wer Ironie findet kann sie gerne behalten oder sich in die Harre schmieren. ;~) IMO ein wenig übertrieben um bei dem Trivialcode auf GPL hinzuweisen.

BTW: Dir ist schon bewusst das es ärger geben kann wenn du denn User-agent fälscht?

Code: Alles auswählen

import urllib, re
uagent_re = re.compile(r'\s*<i>\s*(Browser Name).*?<br />(.*?)<br />')

req = urllib.urlopen("http://www.news4mobile.de/browsercheck/")
print uagent_re.search(urllib.urlopen("http://www.news4mobile.de/browsercheck/")
                             .read()).groups()
urllib._urlopener = type("_", (urllib.FancyURLopener, object), {"version": "Opera/9.23"})()
print uagent_re.search(urllib.urlopen("http://www.news4mobile.de/browsercheck/")
                             .read()).groups()
('Browser Name', 'Python-urllib/1.17')
('Browser Name', 'Opera/9.23')
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Also am besten den unter der GPL gestellten Trivialcode nicht weiter anschauen und selber sniffen was der `Google Translator` ausspuckt...und dann kann man es unter BSD stellen? Kein Problem. Höchstens 10-30 Minuten arbeit
System erkannt ;)
BTW: Dir ist schon bewusst das es ärger geben kann wenn du denn User-agent fälscht?
Kommt Google mit seiner fetten Mega Monster Server arme und disst meinen Rechner? ;) Fakt ist, das du auf diese Dinge nicht zugreifen kannst, wenn du den User Agent so lässt.
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
BlackJack

Das die Deine IP blocken wenn Du das übertreibst kann tatsächlich sein, denn im allgemeinen schliessen die meisten Nutzungsbedingungen automatisierte und massenhafte Abfragen aus.
poker
User
Beiträge: 146
Registriert: Donnerstag 20. September 2007, 21:44

SigMA hat geschrieben: System erkannt ;)
Super. Wenigstens ein par Leute hier mit Humor, mit den man auch mal lockerer reden kann :) Aber das mit der GPL sehe dennoch so ;)

SigMA hat geschrieben: Kommt Google mit seiner fetten Mega Monster Server arme und disst meinen Rechner? ;) Fakt ist, das du auf diese Dinge nicht zugreifen kannst, wenn du den User Agent so lässt.
Hehe, das wird googles Farm wohl nicht machen. Aber fakt ist, das die Tatsache das andre User-Agenten, außer den von Browserherstellern geblockt werden, einen Grund hat ;) Die wollen halt solche automatisierten Zugriffe verhindern. Aber letztendlich ist das dein/euer Bier vom projekt das ihr da baut. Ich wollte dich nur darauf hinweisen.

EDIT: Aber eigentlich ganz schön schlampig von Google. Ich hätte mehr erwartet, als nur den User-Agenten vom Header auszulesen :D
Antworten