コード例 #1
0
ファイル: Program.cs プロジェクト: VuNamHa/l-thuy-t-NNLT
        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
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: VuNamHa/l-thuy-t-NNLT
 // them phan tu vao tab
 public void Add(node n)
 {
     data.Add(n);
 }