singular und plural formen

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
PauleJS
User
Beiträge: 34
Registriert: Freitag 22. Oktober 2010, 14:58

gibt es eine möglichkeit in python singular und plural formen von wörtern zu erkennen und zu erstellen?
wenn singular erkannt wird, soll die plural form erstellt werden und umgekehrt!

dies gilt nur für deutsche wörter!
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Wie willst du das machen? Speziell im deutschen? In englisch geht das gerade noch, weil für die meisten Wörter einfach ein "s" angehängt wird. Aus Car wird Cars, aus Apple wird Apples usw. Und selbst da kann man VERMUTEN, dass ein Wort, das auf "s" endet, eine plural Form sein könnte. Eine Garantie hat man nicht.

Im deutschen ist das IMHO völlig unmöglich, es sei denn, man erstellt eine vollständige Datenbank. Im deutschen gibt es keine festgelegten Regeln für eine Plural Form. Manche Wörter enden auf "n" (Straße, Straßen), andere werden auch in der Mitte anders geschrieben (Wort, Wörter), wieder andere werden sowohl in Singular als auch Plural gleich geschrieben (der Computer, die Computer)
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
PauleJS
User
Beiträge: 34
Registriert: Freitag 22. Oktober 2010, 14:58

hast ja recht! hab mir nur gedacht das man viellt für bestimmte wortgruppen das ganze etwas einschränken kann

wörter die auf "ung", "ing", usw. könnte man zusammen fassen
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Sicherlich kann man so etwas programmieren. Im ersten Schritt musst die Regeln zur Pluralbildung umsetzen. Da gibt es sicherlich einige. Allerdings gibt es auch recht viele Ausnahmen von diesen Regeln. An der Stelle wird es dann kompliziert. Probiere es doch einfach und schau inwieweit das umsetzbar ist.

Grüße
Gerrit
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Lies Dich doch grundsätzlich in das Thema "Stemming" ein:
http://de.wikipedia.org/wiki/Stemming
http://tartarus.org/~martin/PorterStemmer/

Ich denke das wäre ein guter Ansatz für das Problem. Iirc gabs da fürs Englische auch eine Python-Implementierung (die aber aufgrund des Alters und generell ziemlich hässlich ist).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Sicher gibt es Regeln, aber bring die mal einem Computerprogramm bei, wann welche Regel anzuwenden ist.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
PauleJS
User
Beiträge: 34
Registriert: Freitag 22. Oktober 2010, 14:58

oja mit dem thema kann man sich laaaange beschäftigen! ich probier mal wie weit ich komme

danke für die tipps!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

burli hat geschrieben:Sicher gibt es Regeln, aber bring die mal einem Computerprogramm bei, wann welche Regel anzuwenden ist.
Was glaubst du wie eine Suchmaschine funktioniert?
BlackJack

@DasIch: Suchmaschinen machen alles mögliche, diese Gegenfrage ist also ziemlich schwammig. Was glaubst Du denn was die machen? Welche überhaupt? Belege?
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

DasIch hat geschrieben:Was glaubst du wie eine Suchmaschine funktioniert?
Die suchen nicht nach Singular oder Plural. Die nutzen Funktionen wie soundex oder sowas in der Richtung. Oder die haben tatsächlich Wortlisten
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
lunar

@burli: Auch für Dich gilt, was BlackJack schon DasIch gesagt hat: Ohne Belege sind solche Mutmaßungen wenig wert.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

burli hat geschrieben:In englisch geht das gerade noch, weil für die meisten Wörter einfach ein "s" angehängt wird.
This sounds easy, but is in fact quite tricky.
Da klappt das mit dem s schon nicht mehr. Eine Lösung müsste IMHO immer den Kontext betrachten.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

mutetella hat geschrieben:This sounds easy, but is in fact quite tricky.
Da klappt das mit dem s schon nicht mehr. Eine Lösung müsste IMHO immer den Kontext betrachten.
Man sollte schon davon ausgehen, dass das Wort, das man betrachtet, ein Nomen ist, sonst wird's in der Tat schwierig. Rails hat Methoden, um Worte zu pluralisieren oder singularisieren, und das scheint mit Englisch auch sehr gut zu klappen. Aber da ist auch die Vorraussetzung, dass du ein Nomen hast und weisst, ob du von Singular nach Plural moechtest oder umgekehrt.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Rebecca hat geschrieben:Aber da ist auch die Vorraussetzung, dass du ... weisst, ...
Welchen Sinn macht ein Programm zur Erzeugung von Singular<->Plural, wenn es elementare Informationen dafür von mir benötigt? :K
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Wenn du z.B. in einem UI ausgeben willst, wieviele Datensaetze eine Suchanfrage ergibt und dann entsprechend Plural oder Singular benutzen willst? A la "Found %s user(s)." (Rails benutzt das auch ganz viel, um Model-Namen (singular) den richtigen Tabellen-Namen (Plural) zuzuordnen etc.)

Aber ich habe mich auch geirrt, du musst nur wissen dass es ein Nomen ist, egal ob Singular oder Plural.

Code: Alles auswählen

irb(main):012:0* 'user'.pluralize
=> "users"
irb(main):013:0> 'users'.pluralize
=> "users"
irb(main):014:0> 'index'.pluralize
=> "indices"
irb(main):015:0> 'summary'.pluralize
=> "summaries"
Ich kann mir andersherum gerade keinen Anwendungsfall vorstellen, bei dem man die Vorgabe nicht hat; von Textanalysen vielleicht mal abgesehen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

BlackJack hat geschrieben:@DasIch: Suchmaschinen machen alles mögliche, diese Gegenfrage ist also ziemlich schwammig. Was glaubst Du denn was die machen? Welche überhaupt? Belege?
Man ermittelt den Wortstamm und sucht danach, dafür ist es unter anderem notwendig herauszufinden ob man es mit Singular oder Plural zu tun hat, siehe z.B. http://en.wikipedia.org/wiki/Stemming#Applications.

Sphinx generiert eine solche Suche für die HTML Dokumentation.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und man muss bedenken dass es Sprachen mit mehr als einer Pluralform gibt. Daher scheint diese Rails-API auch die Anzahl als Parameter zu nehmen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Und es gibt Worte wie 'Bank' und 'Wort', bei denen man den Plural ohne Zusammenhang gar nicht korrekt bestimmen kann </Klugscheiss>

Bei Django z.B. muss man die Finger von der eingebauten pluralize-Funktion lassen, sobald man i18n-Zeug braucht (da - mit gettext und co. - wird dann Ein- und Mehrzahl wieder händisch getrennt).
Antworten