Bu yüzden, Fransızca için fiilleri (algoritmik olarak değil, veri kümesi aracılığıyla) eşlenikleştirmek için bir program yazma çabalarımda ufak bir sorunla karşılaştım.
Fiilleri birleştiren algoritma, fiilleri 17 ya da öylesine fiil durumları için oldukça basittir ve her durum için belirli bir düzen üzerinde çalışır; bu nedenle, bu 17 sınıf için eşlenik sonekleri statiktir ve yakın zamanda herhangi bir zamanda değişmeyecektir (büyük olasılıkla). Örneğin:
// Verbs #1 : (model: "chanter")
terminations = {
ind_imp: ["ais", "ais", "ait", "ions", "iez", "aient"],
ind_pre: ["e", "es", "e", "ons", "ez", "ent"],
ind_fut: ["erai", "eras", "era", "erons", "erez", "eront"],
participle: ["é", "ant"]
};
Bunlar, Fransızca'daki en yaygın fiil sınıfı için çekim ekleridir.
Konjugasyonları da muhtemelen gelecek bir iki yüzyıl için durağan kalacak başka fiil sınıfları (düzensiz) vardır. Düzensiz olduklarından tam eşleniklerinin statik olarak dahil edilmesi gerekir, çünkü bir örüntüden güvenilir şekilde konjuge edilemezler (ayrıca sadece [sayım] 32 düzensizler de vardır). Örneğin:
// "être":
forms = {
ind_imp: ["étais", "étais", "était", "étions", "étiez", "étaient"],
ind_pre: ["suis", "es", "est", "sommes", "êtes", "sont"],
ind_fut: ["serai", "seras", "sera", "serons", "serez", "seront"],
participle: ["été", "étant"]
};
Bütün bunları XML'e, hatta JSON'a koyabilir ve kullanılması gerektiğinde seri hale getirebilirim, ama bir nokta var mı? Bu dizeler, değişen, ancak yavaş bir oranda, doğal dilin bir parçasıdır.
Benim endişe şeyler "doğru" yolu yapıyor ve bazı veri kaynağını deserializing etmekle, yok sorunu karmaşık değil olmanızdır ihtiyaç karmaşık olmak, ama aynı zamanda tamamen bütün hedefe arka takip ettik algoritmik yaklaşım: için değil bir veri kaynağı kullanın! C # 'da, bu dizeleri numaralandırılmış türde ya da bir şeyde barındırmak için namespace Verb.Conjugation
(örn. class Irregular
) Altında bir sınıf oluşturabilirim , onları XML içine doldurmak ve a oluşturmak class IrregularVerbDeserializer
.
Söz Yani: o vardır koda dizeleri uygundur çok bir uygulamanın ömrü boyunca değişim pek mümkün? Elbette değişmeyeceklerinin% 100'ünü garanti edemiyorum, ancak maliyete karşı risk neredeyse gözlerimdeyken önemsiz - kodlama burada daha iyi bir fikir.
Düzenleme : Önerilen yinelenen sorar statik dizeleri çok sayıda saklamak için nasıl benim sorum ise, ne zaman yapayım ki koda Bu statik dizeleri .