亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matchnamerule.cs

?? 好用的中文分詞算法 好不容易才搞到的 好用的中文分詞算法
?? CS
字號:
?using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace KTDictSeg
{
    /// <summary>
    /// 匹配姓名
    /// </summary>
    class MatchName : IRule
    {
        PosBinRule m_PosBinRule;
        CPOS m_Pos;

        /// <summary>
        /// 沒有明顯歧異的姓氏
        /// </summary>
        static string[] FAMILY_NAMES = {
            //有明顯歧異的姓氏
            "王","張","黃","周","徐",
            "胡","高","林","馬","于",
            "程","傅","曾","葉","余",
            "夏","鐘","田","任","方",
            "石","熊","白","毛","江",
            "史","候","龍","萬","段",
            "雷","錢","湯","易","常",
            "武","賴","文", "查",

            //沒有明顯歧異的姓氏
            "趙", "肖", "孫", "李",
            "吳", "鄭", "馮", "陳", 
            "褚", "衛", "蔣", "沈", 
            "韓", "楊", "朱", "秦", 
            "尤", "許", "何", "呂", 
            "施", "桓", "孔", "曹",
            "嚴", "華", "金", "魏",
            "陶", "姜", "戚", "謝",
            "鄒", "喻", "柏", "竇",
            "蘇", "潘", "葛", "奚",
            "范", "彭", "魯", "韋",
            "昌", "俞", "袁", "酆", 
            "鮑", "唐", "費", "廉",
            "岑", "薛", "賀", "倪",
            "滕", "殷", "羅", "畢",
            "郝", "鄔", "卞", "康",
            "卜", "顧", "孟", "穆",
            "蕭", "尹", "姚", "邵",
            "湛", "汪", "祁", "禹",
            "狄", "貝", "臧", "伏",
            "戴", "宋", "茅", "龐",
            "紀", "舒", "屈", "祝",
            "董", "梁", "杜", "阮",
            "閔", "賈", "婁", "顏",
            "郭", "邱", "駱", "蔡",
            "樊", "凌", "霍", "虞",
            "柯", "昝", "盧", "柯",
            "繆", "宗", "丁", "賁",
            "鄧", "郁", "杭", "洪",
            "崔", "龔", "嵇", "邢",
            "滑", "裴", "陸", "榮",
            "荀", "惠", "甄", "芮",
            "羿", "儲", "靳", "汲", 
            "邴", "糜", "隗", "侯",
            "宓", "蓬", "郗", "仲",
            "欒", "鈄", "歷", "戎",
            "劉", "詹", "幸", "韶",
            "郜", "黎", "薊", "溥",
            "蒲", "邰", "鄂", "咸",
            "卓", "藺", "屠", "喬",
            "郁", "胥", "蒼", "莘",
            "翟", "譚", "貢", "勞",
            "冉", "酈", "雍", "璩",
            "桑", "桂", "濮", "扈",
            "冀", "浦", "莊", "晏",
            "瞿", "閻", "慕", "茹",
            "習", "宦", "艾", "容",
            "慎", "戈", "廖", "庾",
            "衡", "耿", "弘", "匡",
            "闕", "殳", "沃", "蔚",
            "夔", "隆", "鞏", "聶",
            "晁", "敖", "融", "訾",
            "辛", "闞", "毋", "乜",
            "鞠", "豐", "蒯", "荊",
            "竺", "盍", "萬俟",
            "司馬", "上官", "歐陽",
            "夏侯", "諸葛", "聞人",
            "東方", "赫連", "皇甫",
            "尉遲", "公羊", "澹臺",
            "公冶", "宗政", "濮陽",
            "淳于", "單于", "太叔",
            "申屠", "公孫", "仲孫",
            "軒轅", "令狐", "徐離",
            "宇文", "長孫", "慕容",
            "司徒", "司空"};

        static Hashtable m_FamilyNameTbl;

        public MatchName(CPOS pos)
        {
            m_PosBinRule = new PosBinRule(pos);
            m_Pos = pos;

            m_FamilyNameTbl = new Hashtable();
            foreach (String familyName in FAMILY_NAMES)
            {
                m_FamilyNameTbl[familyName] = true;
            }
        }

        /// <summary>
        /// 是否是中文名字
        /// </summary>
        /// <param name="familyName">姓</param>
        /// <param name="firstName">名</param>
        /// <returns>是返回true</returns>
        static public bool IsChineseName(String familyName, String firstName)
        {
            if (firstName.Length > 2 || familyName.Length > 2)
            {
                return false;
            }

            return m_FamilyNameTbl[familyName] != null;
        }

        #region IRule 成員

        /// <summary>
        /// 匹配姓位于單詞首部的情況
        /// </summary>
        /// <param name="preWords"></param>
        /// <param name="index"></param>
        /// <param name="retWords"></param>
        /// <returns></returns>
        private int MatchFamilyNameInHead(ArrayList preWords, int index, ArrayList retWords)
        {
            String curWord = (String)preWords[index];

            if (index >= preWords.Count - 1)
            {
                return -2;
            }

            if (curWord.Length > 2)
            {
                return -1;
            }

            String nextWord = (String)preWords[index + 1];

            if (curWord[0] < 0x4e00 || curWord[0] > 0x9fa5)
            {
                //不是漢字
                return -2;
            }

            if (nextWord[0] < 0x4e00 || nextWord[0] > 0x9fa5)
            {
                //不是漢字
                return -2;
            }

            if (m_PosBinRule.Match(curWord, nextWord))
            {
                return -2;
            }

            String familyName;

            if (curWord.Length == 1)
            {
                if (m_FamilyNameTbl[curWord] == null)
                {
                    return -1;
                }
                else
                {
                    familyName = curWord;
                }
            }
            else
            {
                if (m_FamilyNameTbl[curWord] == null)
                {
                    if (m_FamilyNameTbl[curWord[0].ToString()] == null)
                    {
                        return -1;
                    }
                    else
                    {
                        familyName = curWord[0].ToString();
                    }
                }
                else
                {
                    familyName = curWord;
                }
            }

            String name = curWord + nextWord;

            if (name.Length - familyName.Length == 1)
            {
                //單字名 還要嘗試是否是雙字名

                if (index < preWords.Count - 2)
                {
                    String nnext = (String)preWords[index + 2];

                    if (nnext.Length == 1)
                    {
                        if (!m_PosBinRule.MatchNameInHead(nnext))
                        {
                            name += nnext;
                            retWords.Add(name);
                            return index + 3;
                        }
                    }
                }
            }
            else if (name.Length - familyName.Length > 2)
            {
                String nnext = nextWord;
                if (nnext.Length > 1)
                {
                    if (m_PosBinRule.MatchNameInHead(nnext.Substring(1, nnext.Length-1)))
                    {
                        name = curWord + nnext[0].ToString();
                        preWords.Insert(index +2, nnext.Substring(1, nnext.Length - 1));
                        retWords.Add(name);
                        return index + 2;
                    }
                }
            }


            retWords.Add(name);
            return index + 2;
        }

        /// <summary>
        /// 匹配姓位于單詞尾部的情況
        /// </summary>
        /// <param name="preWords"></param>
        /// <param name="index"></param>
        /// <param name="retWords"></param>
        /// <returns></returns>
        private int MatchFamilyNameInTail(ArrayList preWords, int index, ArrayList retWords)
        {
            if (retWords.Count < 1)
            {
                return -1;
            }

            String curWord = (String)retWords[retWords.Count-1];

            if (curWord.Length < 2)
            {
                return -1;
            }

            String nextWord = (String)preWords[index];

            if (nextWord.Length > 2)
            {
                return -1;
            }

            String familyName;

            //單姓
            familyName = curWord[curWord.Length - 1].ToString();

            if (m_FamilyNameTbl[familyName] == null)
            {
                familyName = curWord.Substring(curWord.Length-2, 2);
                if (m_FamilyNameTbl[familyName] == null)
                {
                    return -1;
                }
            }

            String remain = curWord.Substring(0, curWord.Length - familyName.Length);

            if (retWords.Count > 0)
            {
                //重新組合前面的詞,并判斷詞性匹配
                String newWord = null;
                bool isReg;

                if (retWords.Count > 1)
                {
                    newWord = retWords[retWords.Count - 2] + remain;
                    m_Pos.GetPos(newWord, out isReg);
                    if (!isReg)
                    {
                        newWord = null;
                    }
                    else
                    {
                        if (!m_PosBinRule.MatchNameInTail(newWord))
                        {
                            newWord = null;
                        }
                    }

                    if (newWord != null)
                    {
                        retWords.Remove(retWords.Count - 1);
                        retWords.Remove(retWords.Count - 1);
                    }

                }

                if (newWord == null)
                {
                    newWord = remain;
                    m_Pos.GetPos(newWord, out isReg);
                    if (!isReg)
                    {
                        if (retWords.Count > 1)
                        {
                            newWord = retWords[retWords.Count - 2] + remain;
                            retWords.RemoveAt(retWords.Count - 1);
                        }
                    }
                    else
                    {
                        if (!m_PosBinRule.MatchNameInTail(newWord))
                        {
                            newWord = null;
                        }
                    }

                    if (newWord != null)
                    {
                        retWords.RemoveAt(retWords.Count - 1);
                    }
                }

                if (newWord != null)
                {
                    retWords.Add(newWord);
                }
                else
                {
                    return -1;
                }
            }

            String name = familyName + nextWord;

            if (name.Length - familyName.Length == 1)
            {
                //單字名 還要嘗試是否是雙字名

                if (index < preWords.Count - 1)
                {
                    String nnext = name + (String)preWords[index + 1];
                    nnext = nnext.Substring(familyName.Length, nnext.Length - familyName.Length);

                    if (nnext.Length <= 2)
                    {
                        if (!m_PosBinRule.MatchNameInHead(nnext))
                        {
                            name = name + (String)preWords[index + 1];
                            retWords.Add(name);
                            return index + 2;
                        }
                    }
                }
            }

            retWords.Add(name);
            return index + 1;
        }


        public int ProcRule(ArrayList preWords, int index, ArrayList retWords)
        {
            int idx = MatchFamilyNameInHead(preWords, index, retWords);
            return idx;
/*
            if (idx < -1)
            {
                return -1;
            }

            if (idx < 0)
            {
                return MatchFamilyNameInTail(preWords, index, retWords);
            }
            else
            {
                return idx;
            }
 */ 
        }

        #endregion
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍自拍另类欧美| 色婷婷久久一区二区三区麻豆| 粉嫩欧美一区二区三区高清影视| 一本色道亚洲精品aⅴ| 日韩精品一区二区三区中文精品| 日本一区二区久久| 日韩成人午夜电影| 91视视频在线观看入口直接观看www| 欧美成人午夜电影| 日韩高清在线不卡| 欧美丝袜丝nylons| 一区二区视频在线看| 国产高清久久久| 欧美精品一区二区三区久久久| 亚洲一区二区四区蜜桃| 91性感美女视频| 国产性色一区二区| 国产真实精品久久二三区| 91麻豆精品国产91久久久久久久久| 亚洲欧洲色图综合| 成人久久18免费网站麻豆 | 黄页视频在线91| 欧美日韩在线三级| 亚洲自拍偷拍麻豆| 欧洲色大大久久| 伊人性伊人情综合网| 色香色香欲天天天影视综合网| 欧美激情艳妇裸体舞| 国产精品一区二区x88av| 久久这里只有精品视频网| 免费在线成人网| 日韩亚洲欧美成人一区| 日本欧美大码aⅴ在线播放| 欧美性videosxxxxx| 亚洲一区二区视频在线观看| 精品视频123区在线观看| 亚洲国产日韩综合久久精品| 欧美日韩一本到| 日韩国产精品久久久| 日韩欧美电影一区| 国产一区二区精品久久99| 久久久99久久| 色呦呦网站一区| 一区二区三区鲁丝不卡| 欧美视频第二页| 免费看欧美女人艹b| 久久在线观看免费| 波多野结衣视频一区| 亚洲另类在线视频| 欧美片网站yy| 国产一区二区精品久久91| 亚洲色图清纯唯美| 欧美日韩视频在线观看一区二区三区| 日韩国产精品91| 国产情人综合久久777777| 色狠狠综合天天综合综合| 日韩av一级电影| 中文字幕精品三区| 欧美日韩一卡二卡三卡 | 成人一区二区三区视频在线观看| 国产精品久久久99| 欧美日韩大陆在线| 黑人精品欧美一区二区蜜桃| 久久久久99精品国产片| 色老头久久综合| 韩国女主播一区| 亚洲码国产岛国毛片在线| 欧美日韩国产综合草草| 国产精品一区二区免费不卡| 亚洲欧洲三级电影| 欧美一级黄色片| 99久久精品国产一区二区三区| 日日摸夜夜添夜夜添国产精品| 久久综合九色综合97婷婷| 日本乱人伦aⅴ精品| 裸体健美xxxx欧美裸体表演| 国产精品福利一区| 欧美另类高清zo欧美| 国产91丝袜在线播放0| 香蕉成人啪国产精品视频综合网 | 国内欧美视频一区二区| 一二三区精品福利视频| 久久精品视频在线看| 在线成人午夜影院| 99在线热播精品免费| 激情丁香综合五月| 五月天久久比比资源色| 亚洲三级免费电影| 国产欧美日韩精品一区| 欧美zozozo| 欧美日韩午夜精品| 色婷婷香蕉在线一区二区| 成人av网站在线观看免费| 韩国女主播成人在线观看| 免费成人在线观看视频| 五月天久久比比资源色| 亚洲最快最全在线视频| 国产精品情趣视频| 精品va天堂亚洲国产| 91精品国产一区二区三区香蕉| 色丁香久综合在线久综合在线观看| 国产91在线看| 成人自拍视频在线观看| 国产伦理精品不卡| 久久精品噜噜噜成人av农村| 亚洲国产欧美另类丝袜| 亚洲男人电影天堂| 亚洲男人天堂一区| 一区二区三区在线视频观看| 一区二区三区成人在线视频| 亚洲一区二区三区免费视频| 一区二区欧美视频| 亚洲一区二区三区四区中文字幕| 国产精品二区一区二区aⅴ污介绍| 中文字幕乱码一区二区免费| 中文字幕第一区综合| 国产精品欧美经典| 欧美激情一区在线| 成人免费在线视频观看| 亚洲日本在线观看| 亚洲丝袜美腿综合| 一区二区三区在线视频免费观看| 亚洲激情在线播放| 亚洲一级电影视频| 丝袜亚洲精品中文字幕一区| 日韩精品亚洲专区| 精品一区二区三区久久| 国产专区综合网| aaa欧美色吧激情视频| 色综合久久中文字幕综合网| 欧美亚洲动漫另类| 欧美一区二区福利视频| 欧美成人精品3d动漫h| 久久综合久久综合久久综合| 中文字幕巨乱亚洲| 一个色妞综合视频在线观看| 日韩高清一级片| 国产精品一二三四区| fc2成人免费人成在线观看播放| 色综合天天综合在线视频| 91啪亚洲精品| 91传媒视频在线播放| 欧美日韩午夜在线视频| 久久久久一区二区三区四区| 亚洲欧洲制服丝袜| 看电影不卡的网站| 一本到高清视频免费精品| 欧美一区午夜视频在线观看| 国产人伦精品一区二区| 一区二区三区精品在线| 狠狠色狠狠色综合| 欧美在线综合视频| 国产人妖乱国产精品人妖| 亚洲一区二区在线视频| 国产一区二区精品久久91| 91老司机福利 在线| 久久久亚洲欧洲日产国码αv| 亚洲精品美国一| 国产成人精品一区二区三区网站观看 | 日韩三级伦理片妻子的秘密按摩| 中文字幕乱码一区二区免费| 日韩在线观看一区二区| 成人视屏免费看| 日韩欧美中文字幕制服| 一个色在线综合| 波多野结衣在线aⅴ中文字幕不卡| 欧美一区二区女人| 亚洲国产中文字幕在线视频综合| 精品一区二区久久| 欧美裸体一区二区三区| 国产精品美女一区二区三区| 精品综合免费视频观看| 67194成人在线观看| 一区二区三区资源| av亚洲产国偷v产偷v自拍| 久久噜噜亚洲综合| 免费在线看一区| 在线观看91av| 亚洲一区二区三区四区五区中文| 99国产欧美另类久久久精品 | 亚洲精品一卡二卡| 不卡视频一二三| 欧美国产乱子伦| 国产一区二区不卡老阿姨| 精品999在线播放| 久久国内精品自在自线400部| 欧美日韩亚洲综合| 亚洲国产美女搞黄色| 欧美系列亚洲系列| 亚洲一区视频在线| 欧美四级电影在线观看| 亚洲综合免费观看高清完整版在线| 99这里只有精品| 一区二区在线免费| 欧美视频三区在线播放| 亚洲国产va精品久久久不卡综合| 色八戒一区二区三区| 亚洲自拍偷拍麻豆| 欧美日韩亚洲综合在线| 日日夜夜一区二区|