Sprache programmieren

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.
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

Dienstag 17. Juni 2008, 19:50

Ich habe ein riesieges Programm geschrieben um die Deutsche Grammatik zu erkennen. Es findet die Wortarten in einem eingegeben Text. z.b Personalpronomina, Präpositionen usw.... jedoch, wie gesagt, ist das Programm riesig, weil ich alles mit schleifen bearbeitet habe, kennt ihr ein Algorithmus für Deutsche- Grammatik. ??? Und wenn ja wie implementiere ich diese in mein Programm? Vielen Dank 8)
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Dienstag 17. Juni 2008, 19:57

Wenn du deinen Quellcode zeigst, gibt es bestimmt praktikable Vorschläge.
So ist es bis jezt etwas ... ungenau.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Dienstag 17. Juni 2008, 20:12

Progletic hat geschrieben:kennt ihr ein Algorithmus für Deutsche- Grammatik?
ja
Und wenn ja wie implementiere ich diese in mein Programm?
viel, viel fleiss.
DasIch
User
Beiträge: 2450
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dienstag 17. Juni 2008, 21:46

Progletic hat geschrieben:Ich habe ein riesieges Programm geschrieben um die Deutsche Grammatik zu erkennen[...]kennt ihr ein Algorithmus für Deutsche- Grammatik. ??? Und wenn ja wie implementiere ich diese in mein Programm? Vielen Dank 8)
Wtf? Du hast doch selber ein Programm dafür geschrieben oder verstehe ich dass jetzt falsch?
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

Dienstag 17. Juni 2008, 21:50

wie kann ich es am besten euch zeigen?
DasIch
User
Beiträge: 2450
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dienstag 17. Juni 2008, 21:57

Progletic hat geschrieben:wie kann ich es am besten euch zeigen?
Am besten mit einem Pastebin, wie z.B. LodgeIt!
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

Mittwoch 18. Juni 2008, 14:48

http://paste.pocoo.org/show/72787/

Der algorithmische Schwierigkeitsgrad meines Ansatzes ist zu niedrig.

Wie kann ich es besser machen? Habt ihr eine Idee? :roll: [/url]
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mittwoch 18. Juni 2008, 14:55

Ja, definiere Dir eine Grammatik und erstelle Dir einen Parser damit. Bei den Stichwörtern Grammatik und Parsergenerator solltest Du die entscheidenden Hinweise hier im Board finden.

Wer sagt denn, dass der Ansatz "zu niedrig" sei? (Und nach welchem Kriterium wird hier gemessen?)

Ok, das alles ist recht unflexibel und die Prüfung auf konkrete Wörter usw. könnte man auch wesentlich flexibler machen (Stichwort Daten in Datei auslagern, nicht im Quellcode definieren).

Allerdings ist das Parsen einer natürlichen Sprache nicht gerade trivial!

Gibt es dazu eine konkrete Aufgabenstellung?
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Mittwoch 18. Juni 2008, 15:27

Bitte entschuldige meinen Vorangegangenen Zynismus, du meinst es ernst.

Ich bin mir nicht sicher, aber ich meine, dass die deutsche Sprache (und die meisten Menschensprachen) zu einer Kategorie gehören, die nicht wirklich zu Parsen ist, das klassische Beispiel: "Der Jäger sieht den Hasen mit dem größen Fernglas" "Der Jäger sieht den Hasen mit dem weichen Fell".
Wem gehört das Fernglas, wem gehört das Fell?
Sprachlich ungewohnt, aber afaik nicht falsch: "Das Futter frisst die Katze". Wer frisst hier wen?
Hier ist ohne Kontext nicht klar, wer Objekt und wer Subjekt ist.

Was ist das Ziel, was du erreichen willst, vielleicht kann man da vereinfachen?
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

Mittwoch 18. Juni 2008, 17:05

m Moment ist meine Lösung im Grunde genommen nichts
anderes als eine große Tabelle, in der für jeden Fall die jeweilige
Lösung nachgeschlagen wird.
Genau dessen algorithmische Schwierigkeitsgrad ist zu niedrig.

Bei meiner Lösung werden die einzelnen Wortarten, gefunden, weil ich diese aufgelistet habe. Es muss doch ein Weg geben, wie man diese über eine andere Abfrage wie z.b. über die Grammatik sortieren lassen kann.
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

Mittwoch 18. Juni 2008, 17:14

Es sind im Prinzip einige Listen, eine Menge immer gleicher if-Abfragen, doch kein interessanter Algorithmus- wie kann ich das ändern...???
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Mittwoch 18. Juni 2008, 17:40

Ich möchte mal anmerken, dass das Programm nicht `riesig` ist.

Wofür brauchst du das denn überhaupt?
DasIch
User
Beiträge: 2450
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mittwoch 18. Juni 2008, 18:05

Progletic hat geschrieben:Es sind im Prinzip einige Listen, eine Menge immer gleicher if-Abfragen, doch kein interessanter Algorithmus- wie kann ich das ändern...???
Schau dir mal eine Grammatik an und nimm dir eine einfache Regel und eine handvoll Beispielsätze. Entwickle einen Algorithmus diese Regel immer richtig anwenden zu können. Das ganze musst du nur noch für alle anderen Regeln auch hinbekommen ;)
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Mittwoch 18. Juni 2008, 18:11

Das ist ein ganz nettes Projekt, allerdings bin ich da kepplas Meinung, dass das alles andere als trivial und ich denke sogar, dass es im Fall der deutschen Sprache sogar unmöglich ist.
Erst recht mit einem Algorithmus.

Du hast eine Datenbank erstellt mit der du Wörter versuchst zu klassifizieren. IMHO ist das die einzige Möglichkeit, allerdings entwickeln sich Sprachen weiter und das dezentral ;) Man denke nur an die ganzen neuen Lehnwörter aus dem Englischen ...

Natürliche Sprachen sind schlichtweg ungeeignet, sie maschinell zu verarbeitet, darum wurden ja auch Programmiersprachen erfunden ;). Sie sind mehrdeutig und man muss deshalb die Bedeutung kennen, um Wörter bzw Satzteile grammatikalisch zu zu ordnen. Um noch nen Beispiel zu nennen: `Das (der, die)' ist sowohl Artikel als auch Pronomen.


Aber wenn du daran wirklich interessiert bist, solltest dich mit Germanisten/Linguisten zusammentun. Oder es mit ner anderen Sprache versuchen. Kunstsprachen sind da eher für geeignet, manche sogar auf Eindeutigkeit konzipiert ... aber ich bin da kein Profi ;)
Benutzeravatar
sehbaer
User
Beiträge: 39
Registriert: Sonntag 30. März 2008, 17:26
Wohnort: Kölle

Mittwoch 18. Juni 2008, 18:20

vielleicht kann ja das Natural Language Tollkit weiterhelfen:

http://nltk.org/index.php/Main_Page
the Natural Language Toolkit — is a suite of open source Python modules, data and documentation for research and development in natural language processing. NLTK contains Code supporting dozens of NLP tasks, along with 40 popular Corpora and extensive Documentation including a 375-page online Book. Distributions for Windows, Mac OSX and Linux are available.
Oder MontyLingua:

http://web.media.mit.edu/~hugo/montylingua/
MontyLingua is a free*, commonsense-enriched, end-to-end natural language understander for English. Feed raw English text into MontyLingua, and the output will be a semantic interpretation of that text. Perfect for information retrieval and extraction, request processing, and question answering. From English sentences, it extracts subject/verb/object tuples, extracts adjectives, noun phrases and verb phrases, and extracts people's names, places, events, dates and times, and other semantic information. MontyLingua makes traditionally difficult language processing tasks trivial!
Zuletzt geändert von sehbaer am Mittwoch 18. Juni 2008, 18:27, insgesamt 1-mal geändert.
...es sind ganz bestimmt mehr Nullen als Einsen.
Antworten