/// <summary> /// Llegeix un fitxer com el generat pel web de tractament de propostes. /// Conté entrades en diversos formats: DIEC, topònims, antropònims, etc. /// </summary> private void LlegeixEntradesWeb(int mod, List<string> log, DateTime horaInici, Regles regles, List<Identificador> identificadors, List<Entrada> entrades) { var idDiec = new IdentificadorDIEC("web", regles, null); var idToponims = new IdentificadorToponims("web", regles); var idAntroponims = new IdentificadorAntroponims("web", regles, null); var idDiversos = new IdentificadorDiversos("web", regles); AfegeixLiniaLog("Llegeix les propostes del web", horaInici, log); var sr = new StreamReader(DirEntrades("web.txt"), Encoding.Default); var linies = new List<string>(); while (!sr.EndOfStream) linies.Add(sr.ReadLine()); var temp = DirEntrades("_part_web.txt"); // llista de topònims linies = TriaLinies(linies, temp, delegate(string lin) { Match m; if ((m = reTopo.Match(lin)).Success) return m.Groups["nom"].Value; else return ""; }); idToponims.LlegeixEntrades(temp, entrades, mod); // llista d'antropònims linies = TriaLinies(linies, temp, delegate(string lin) { Match m; if ((m = reAntro.Match(lin)).Success) { if (m.Groups["gen"].Value == "m") return m.Groups["nom"].Value; else { var nom = m.Groups["nom"].Value; var p = new Paraula(nom); return string.Format("{0}{1}", nom, p.PotApostrofar(true) ? " f" : ""); } } else return ""; }); idAntroponims.LlegeixEntrades(temp, entrades, mod); // llista de diversos linies = TriaLinies(linies, temp, delegate(string lin) { Match m; if ((m = reDivers.Match(lin)).Success) return m.Groups["nom"].Value; else return ""; }); idDiversos.LlegeixEntrades(temp, entrades, mod); // la resta, té el format DIEC TriaLinies(linies, temp, lin => lin); idDiec.LlegeixEntrades(temp, entrades, mod); if (File.Exists(temp)) File.Delete(temp); identificadors.Add(idToponims); identificadors.Add(idAntroponims); identificadors.Add(idDiversos); identificadors.Add(idDiec); }
private void test_07(GrupTest arrel) { GrupTest grup = arrel.NouGrup("Processament de fitxers"); Regles regles = CarregaRegles(true); List<Entrada> entrades = new List<Entrada>(); Identificador identificador = null; grup.NouTest(@"Llegeix DIEC", delegate(RTest resultat) { identificador = new IdentificadorDIEC("DIEC", regles, DirEntrades("irregulars_diec.txt")); identificador.LlegeixEntrades(DirEntrades("diec.txt"), entrades, 100); identificador = new IdentificadorDIEC("DIEC2", regles, DirEntrades("irregulars_diec2.txt")); identificador.LlegeixEntrades(DirEntrades("diec2.txt"), entrades, 1); identificador = new IdentificadorDIEC("més paraules", regles, null); identificador.LlegeixEntrades(DirEntrades("mes_paraules.txt"), entrades, 1); identificador = new IdentificadorToponims("topònims", regles); identificador.LlegeixEntrades(DirEntrades("topònims.txt"), entrades, 1); identificador.LlegeixEntrades(DirEntrades("topònims_estrangers.txt"), entrades, 1); identificador = new IdentificadorGentilicis("gentilicis", regles, null); identificador.LlegeixEntrades(DirEntrades("gentilicis.txt"), entrades, 1); identificador.LlegeixEntrades(DirEntrades("gentilicis_estrangers.txt"), entrades, 1); identificador = new IdentificadorAntroponims("noms i llinatges", regles, null); identificador.LlegeixEntrades(DirEntrades("antropònims.txt"), entrades, 1); identificador.LlegeixEntrades(DirEntrades("llinatges.txt"), entrades, 1); identificador = new IdentificadorDiversos("diversos", regles); identificador.LlegeixEntrades(DirEntrades("abreviatures_duarte.txt"), entrades, 1); identificador.LlegeixEntrades(DirEntrades("marques.txt"), entrades, 1); }); grup.NouTest(@"Genera .aff i .dic (Hunspell)", delegate(RTest resultat) { regles.GeneraAffDicHunspell(DirResultats("prova"), entrades, new Marques(true, "013"), Cat.Cmp); List<string> excSenseEmprar = identificador.ExcepcionsSenseEmprar(); if (excSenseEmprar.Count != 0) foreach (string exc in excSenseEmprar) resultat.Error("No emprada: {0}", exc); }); grup.NouTest(@"Genera .aff i .dic (Hunspell i Myspell)", delegate(RTest resultat) { Identificador id = new IdentificadorDIEC("DIEC", regles, null); List<Entrada> ee = new List<Entrada>(); ee.Add(id.IdentificaEntrada("ent=alçar^cat1=v. tr.^cat2=pron.^cat3=intr.")); ee.Add(id.IdentificaEntrada("ent=cantar^cat1=v. tr.^cat2=intr.")); ee.Add(id.IdentificaEntrada("ent=abellir^cat1=v. intr.^cat2=pron.")); ee.Add(id.IdentificaEntrada("ent=adduir^cat1=v. tr.")); ee.Add(id.IdentificaEntrada("ent=abatre^cat1=v. tr.^cat2=pron.")); ee.Add(id.IdentificaEntrada("ent=anglés -esa^cat1=adj. i m. i f.^cat2=adj.^cat3=m.^mrc1=201")); regles.GeneraAffDicHunspell(DirResultats("prova"), ee, Marques.totes, Cat.Cmp); regles.GeneraAffDicMyspell(DirResultats("prova_myspell"), ee, Marques.totes, Cat.Cmp, IdentificadorCat.GetAfinaMyspell); }); grup.NouTest(@"Versions de diccionaris", delegate(RTest resultat) { Marca marca201 = Marca.Una("201"); Identificador id = new IdentificadorDIEC("DIEC", regles, null); List<Entrada> ee = new List<Entrada>(); ee.Add(id.IdentificaEntrada("ent=alçar^cat1=v. tr.^cat2=pron.^cat3=intr.")); ee.Add(id.IdentificaEntrada("ent=cantar^cat1=v. tr.^cat2=intr.")); ee.Add(id.IdentificaEntrada("ent=abellir^cat1=v. intr.^cat2=pron.")); ee.Add(id.IdentificaEntrada("ent=adduir^cat1=v. tr.")); ee.Add(id.IdentificaEntrada("ent=abatre^cat1=v. tr.^cat2=pron.")); ee.Add(id.IdentificaEntrada("ent=anglès -esa^cat1=adj. i m. i f.^cat2=adj.^cat3=m.")); //ee.Add(id.IdentificaEntrada("ent=anglés -esa^cat1=adj. i m. i f.^cat2=adj.^cat3=m.^mrc1=201")); regles.GeneraAffDicHunspell(DirResultats("prova"), ee, new Marques(true, marca201), Cat.Cmp); List<String> llistaSense201 = regles.GeneraFormes(DirResultats("prova.dic"), new Marques(true, marca201), false); regles.GeneraAffDicHunspell(DirResultats("prova"), ee, Marques.totes, Cat.Cmp); List<String> llistaAmb201 = regles.GeneraFormes(DirResultats("prova.dic"), Marques.totes, false); string dif = Compara(llistaSense201, llistaAmb201, 100); resultat.Assert(dif == "+anglés +d'anglés +l'anglés", "Diferència inesperada entre llistaSense201 i llistaAmb201 ({0})", dif); }); //grup.NouTest(@"Genera .aff i .dic (Myspell, II)", delegate(RTest resultat) //{ // regles.GeneraAffDic(DirResultats("prova_myspell"), entrades, new Marques(true, "013"), Entrada.Speller.MYSPELL, Cat.Cmp); //}); //grup.NouTest(@"Genera les formes d'un diccionari", delegate(RTest resultat) //{ // List<string> formes = regles.GeneraFormes(DirResultats("prova.dic"), Marques.totes, false); // resultat.Nota("S'han generat {0} formes", formes.Count); //}); }
private List<Entrada> LlegeixEntrades(int mod, List<string> log, DateTime horaInici, Regles regles, List<Identificador> identificadors) { List<Entrada> entrades = new List<Entrada>(); LlegeixEntradesWeb(mod, log, horaInici, regles, identificadors, entrades); Identificador identificador = null; identificador = new IdentificadorDIEC("DIEC", regles, DirEntrades("irregulars_diec.txt")); AfegeixLiniaLog("Llegeix les entrades del DIEC", horaInici, log); identificador.LlegeixEntrades(DirEntrades("diec.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDIEC("DIEC2", regles, DirEntrades("irregulars_diec2.txt")); AfegeixLiniaLog("Llegeix les entrades del DIEC2", horaInici, log); identificador.LlegeixEntrades(DirEntrades("diec2.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDIEC("més paraules", regles, null); AfegeixLiniaLog("Llegeix més entrades tipus DIEC", horaInici, log); identificador.LlegeixEntrades(DirEntrades("mes_paraules.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDIEC("Termcat", regles, DirEntrades("irregulars_termcat.txt")); AfegeixLiniaLog("Llegeix entrades del Termcat", horaInici, log); identificador.LlegeixEntrades(DirEntrades("termcat.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorToponims("topònims", regles); AfegeixLiniaLog("Llegeix els topònims", horaInici, log); identificador.LlegeixEntrades(DirEntrades("topònims.txt"), entrades, mod); identificador.LlegeixEntrades(DirEntrades("topònims_estrangers.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorGentilicis("gentilicis", regles, null); AfegeixLiniaLog("Llegeix els gentilicis", horaInici, log); identificador.LlegeixEntrades(DirEntrades("gentilicis.txt"), entrades, mod); identificador.LlegeixEntrades(DirEntrades("gentilicis_estrangers.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorAntroponims("noms i llinatges", regles, null); AfegeixLiniaLog("Llegeix els noms i els llinatges", horaInici, log); identificador.LlegeixEntrades(DirEntrades("antropònims.txt"), entrades, mod); identificador.LlegeixEntrades(DirEntrades("llinatges.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDiversos("diversos", regles); AfegeixLiniaLog("Llegeix entrades diverses", horaInici, log); identificador.LlegeixEntrades(DirEntrades("abreviatures_duarte.txt"), entrades, mod); identificador.LlegeixEntrades(DirEntrades("marques.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDIEC("AVL", regles, DirEntrades("irregulars_avl.txt")); AfegeixLiniaLog("Llegeix les entrades de l'AVL", horaInici, log); identificador.LlegeixEntrades(DirEntrades("avl.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDIEC("AVL_gen", regles, DirEntrades("irregulars_avl_gen.txt")); AfegeixLiniaLog("Llegeix les entrades de l'AVL per a la versió general", horaInici, log); identificador.LlegeixEntrades(DirEntrades("avl_gen.txt"), entrades, mod); identificadors.Add(identificador); identificador = new IdentificadorDIEC("AVL_val", regles, DirEntrades("irregulars_avl_val.txt")); AfegeixLiniaLog("Llegeix les entrades de l'AVL per a la versió valenciana", horaInici, log); identificador.LlegeixEntrades(DirEntrades("avl_val.txt"), entrades, mod); identificadors.Add(identificador); return entrades; }