コード例 #1
0
ファイル: Program.cs プロジェクト: mgrcar/Detextive
 static void Main(string[] args)
 {
     try
     {
         if (args.Length < 5)
         {
             OutputHelp();
         }
         else
         {
             string tags_1_file_name = null, tags_2_file_name = null, tbl_file_name = null, tree_file_name = null,
                    output_file_name = null;
             if (ParseParams(args, ref m_verbose, ref m_consistency_check, ref tags_1_file_name, ref tags_2_file_name,
                             ref tbl_file_name, ref tree_file_name, ref output_file_name))
             {
                 Verbose("Nalagam izhod prvega označevalnika ...\r\n");
                 Corpus corpus_1 = new Corpus();
                 corpus_1.LoadFromXml(tags_1_file_name, /*tag_len=*/ -1);
                 Verbose("Nalagam izhod drugega označevalnika ...\r\n");
                 Corpus corpus_2 = new Corpus();
                 corpus_2.LoadFromXml(tags_2_file_name, /*tag_len=*/ -1);
                 if (!m_consistency_check)
                 {
                     if (corpus_1.TaggedWords.Count != corpus_2.TaggedWords.Count)
                     {
                         Console.WriteLine("*** Napaka! Dolžini vhodnih korpusov se ne ujemata.");
                         return;
                     }
                 }
                 else
                 {
                     Verbose("Preverjam ujemanje besed v vhodnih korpusih ...\r\n");
                     for (int i = 0; i < corpus_1.TaggedWords.Count; i++)
                     {
                         if (corpus_1.TaggedWords[i].Word.ToLower() != corpus_2.TaggedWords[i].Word.ToLower())
                         {
                             Console.WriteLine("*** Napaka! Besede v vhodnih korpusih se ne ujemajo.");
                             return;
                         }
                     }
                 }
                 Verbose("Nalagam tabelo oznak ...\r\n");
                 MetaTaggerData.LoadAttributes(tbl_file_name);
                 Verbose("Nalagam odločitveno drevo ...\r\n");
                 Tree tree = new Tree(tree_file_name);
                 Verbose("Označujem besedilo ...\r\n");
                 MetaTaggerData.LoadTestData(corpus_1, corpus_2);
                 for (int i = 0; i < MetaTaggerData.Items.Count; i++)
                 {
                     if (MetaTaggerData.Items[i].Tag1 != MetaTaggerData.Items[i].Tag2)
                     {
                         ArrayList <KeyDat <string, string> > test_example = MetaTaggerData.CreateExample(i);
                         if (tree.Classify(test_example) != 1)
                         {
                             corpus_1.TaggedWords[i].Lemma = MetaTaggerData.Items[i].Lemma2;
                             corpus_1.TaggedWords[i].Tag   = MetaTaggerData.Items[i].Tag2;
                         }
                     }
                 }
                 Verbose("Pišem izhodno datoteko ...\r\n");
                 StreamWriter writer = new StreamWriter(output_file_name);
                 writer.Write(corpus_1.ToString("XML-MI"));
                 writer.Close();
                 Verbose("Končano.\r\n");
             }
         }
     }
     catch (Exception exception)
     {
         Console.WriteLine("*** Nepričakovana napaka. Podrobnosti: {0}\r\n{1}", exception, exception.StackTrace);
     }
 }