Achtung !! Es hilft viel zu wissen Polnisch oder jede andere natürliche Sprache mit starker Flexion, vorzugsweise mit einem Fall-System (wie zum Beispiel Deutsch), um diese Frage zu beantworten. Insbesondere ist Polnisch Deklination System sehr ähnlich in den Systemen der anderen slawischen Sprachen wie Russisch, Tschechisch, Serbisch usw.Ein Algorithmus zur Deklination von Substantiven polnischer/slawischer Sprachen
Werfen Sie einen Blick auf diese polnischen, unfertig, declinator: declinators.com Ich plane, sie an andere zu verlängern Sprachen, nämlich Russisch und Latein, aber jetzt habe ich mit Polnisch zu kämpfen.
Neben einer großen Datenbank von Deklinationen für Hunderte von Substantiven unterstütze ich rückläufige Substantive, die nicht existieren. Die beste Lösung, die ich bis jetzt gefunden habe, ist einfach die Endungen der Substantive zu überprüfen, so dass sie entsprechend abgelehnt werden können. In meinem Code kommt es auf diese calculateDeclination
Methode an. Ich rufe es an, wenn das Substantiv nicht in der Datenbank ist. Die Innereien des Verfahrens wie folgt aussehen:
if (areLast2Letters(word, "il"))
declinator = new KamilDeclinator(word);
else if (areLast2Letters(word, "sk"))
declinator = new DyskDeclinator(word);
else if (isLastLetter(word, 'm'))
declinator = new RealizmDeclinator(word);
usw. Dies sind nur drei ersten Zehn else if
Klauseln dieses Verfahren.
A-Code eines exemplarischen declinator wie folgt aussieht:
import static declining.utils.StringUtils.*;
public class RealizmDeclinator extends realizm_XuXowiX_XemXieXieDeclinator{
public RealizmDeclinator(String noun) {
super(noun);
}
@Override
protected String calculateStem() {
return word;
}
@Override
public String calculateLocative() {
return swap2ndFromEnd(stem, "ź") + "ie";
}
@Override
public String calculateVocative() {
return swap2ndFromEnd(stem, "ź") + "ie";
}
}
Also hier ist die Frage, gibt es eine andere, elegantere Algorithmus polnische Wörter für sinkende? Muss es so viele if else-Klauseln haben? Muss ich für jeden Substantivtyp so viele Deklinatoren schreiben?
Dieses Problem zeigte mir, wie einfach und unglaublich zahlreich polnische Deklinationsregeln sind. Es hat meinen Algorithmus langweilig und eintönig gemacht. Hoffentlich kann einer von euch mir helfen, es interessant und prägnant zu machen!
Prost
Tabellengesteuerte Software funktioniert gut für diese Art von Sache. – user3386109
Ich werde bald eine für Russisch veröffentlichen =) https://github.com/georgy7/russian_nouns/blob/gh-pages/js/RussianNouns.coffee Es ist fast fertig für die Singularform eines Wortes. –