static void Main() { #region khai bao, load du lieu ban dau // dia chi cac file du lieu token string src_noun = @"nouns.txt"; string src_verb = @"verbs.txt"; string src_adj = @"adjectives.txt"; // dia chi cac file du lieu tap luat sinh string src_rule = @"rules.txt"; // Load tap luat sinh, du lieu token // tap danh tu List <db_token> nouns = ReadDB(src_noun, "noun"); // tap dong tu List <db_token> verbs = ReadDB(src_verb, "verb"); // tap trang tu List <db_token> adjs = ReadDB(src_adj, "adjective"); // tap luat sinh List <rule> rules = ReadRules(src_rule, "rule"); #endregion #region Nhap cau, tien xu ly cau // cau nguoi su dung nhap vao string input; // Cau sau khi da phan tach sentence sen; // Cau sau khi da nhan dien tokens node tokens = new node(); int flag; flag = 0; string tmp; tmp = ""; // Nhap cau can xu ly input = NhapCau(); Console.WriteLine("Input: " + input); // Phan tach cau sen = new sentence(input); // Chuyen doi cau thanh dang token #region Chuyen doi cau thanh dang tokens foreach (string t in sen.list_string) { if (flag <= 1) { if (nouns.Contains(new db_token(t, "noun"))) { tokens.Add(new token(t, "N")); } else if (verbs.Contains(new db_token(t, "verb"))) { tokens.Add(new token(t, "V")); } else if (adjs.Contains(new db_token(t, "adjective"))) { tokens.Add(new token(t, "Ad")); } else { if (tmp == "") { tmp = t; } else { tmp = tmp + " " + t; } flag++; } } else { if (tmp != "") { if (nouns.Contains(new db_token(tmp, "noun"))) { tokens.Add(new token(tmp, "N")); flag = 0; } else if (verbs.Contains(new db_token(tmp, "verb"))) { tokens.Add(new token(tmp, "V")); flag = 0; } else if (adjs.Contains(new db_token(tmp, "adjective"))) { tokens.Add(new token(tmp, "Ad")); flag = 0; } else { flag++; break; } tmp = ""; } if (nouns.Contains(new db_token(t, "noun"))) { tokens.Add(new token(t, "N")); } else if (verbs.Contains(new db_token(t, "verb"))) { tokens.Add(new token(t, "V")); } else if (adjs.Contains(new db_token(t, "adjective"))) { tokens.Add(new token(t, "Ad")); } else { if (tmp == "") { tmp = t; } else { tmp = tmp + " " + t; } } } } if (tmp != "") { if (nouns.Contains(new db_token(tmp, "noun"))) { tokens.Add(new token(tmp, "N")); } else if (verbs.Contains(new db_token(tmp, "verb"))) { tokens.Add(new token(tmp, "V")); } else if (adjs.Contains(new db_token(tmp, "adjective"))) { tokens.Add(new token(tmp, "Ad")); } tmp = ""; flag = 0; } if (flag == 3) { Console.WriteLine("Khong the phan tach cau!!!"); } #endregion #endregion #region Bang ket qua tab result = new tab(); bool f; f = false; // false : 1; true : 2 bool f1; // co danh dau co ket qua hay khong the phan tach cau dua theo bo luat sinh dau vao. f1 = false; // mac dinh la khong the phan tach cau bool f2; for (int i = 0; i < tokens.tokens.Count; i++) { if (f) { } else { if (tokens.tokens[i].value == "S") { // Truong hop hoan thanh banh ket qua. if (tokens.tokens.Count == 1) { f1 = true; } // Truong hop xet cau phan tich xuat hien S nhung cac phan tu cua cau chua xet het (buoc phan tach hien tai va truoc do phan tach sai) if (i != 1) { } else if (i == 1) { // Truong hop cau phan tich xuat hien S nam trong vong 2 buoc break; } } else { if (checkResRule(tokens.tokens[i].value, rules)) { } } } } #endregion #region Tao Bang Earley Parser #endregion #region Xuat bang Ket qua trich xuat tu Earley Parser #endregion #region Xuat ket qua #endregion Console.ReadKey(); // tam dung xem ket qua }
// them phan tu vao tab public void Add(node n) { data.Add(n); }