Dikkat!Lehçe veya güçlü bir fleksiyonla, örneğin bir vaka sistemi ile (örneğin Alman gibi) başka bir doğal dil öğrenmek çok yardımcı olacaktır, bu soruya cevap vermek için. Özellikle, Polonya declension sistemi gibi diğer Slav dillerinin sistemlerine çok benzer: vb, Çekçe, Rusça SırpçaLehçe/Slav dilleri isimlerinin çözülmesi için bir algoritma
bu Lehçe, bitmemiş, declinator göz at: Diğer kadar uzatmak planlıyorum declinators.com diller, yani Rusça ve Latince, ama şimdilik Polonyalı ile mücadele ediyorum.
Yüzlerce isim için büyük bir sapma veri tabanına sahip olmanın yanı sıra, var olmayan azalan isimleri destekliyorum. Şimdiye kadar ortaya koyduğum en iyi çözüm, isimlerin sonlarını kontrol etmektir, böylece isimler buna göre reddedilebilir.
Kodumda bu calculateDeclination
yöntemine geliyor. Eğer isim veritabanında değilse, buna derim. Yöntemin bağırsakları şuna benzer: vb
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);
Bunlar, bu yöntem vardır else if
hükümlerin onlarca ilk üç içindir. Polonyalı kelimeleri reddetmek için başka, daha şık bir algoritma var, Yani burada
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";
}
}
soru şudur:
örnek bir declinator bir kod şöyle? Başka maddeleri var mı? Her bir isim türü için çok fazla deknoz yazmalı mıyım?
Bu sorun bana ne kadar basit ve inanılmaz sayıda Polonyaca çekişme kuralları olduğunu gösterdi. Algoritmamı sıkıcı ve monoton hale getirdi. Umarım, biriniz bana ilginç ve özlü bir şekilde yardımcı olabilir!
Şerefe kendim bir yerli Polonyalı konuşmacı olmasına rağmen
Tablo tabanlı yazılım bu tür bir şey için iyi çalışır. – user3386109
Yakında Rusça için bir tane yayınlayacağım =) https://github.com/georgy7/russian_nouns/blob/gh-pages/js/RussianNouns.coffee Bir kelimenin tekil hali için neredeyse tamamlandı. –