程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C# 一個簡單分詞程序的思路和代碼(二) 鍵樹

C# 一個簡單分詞程序的思路和代碼(二) 鍵樹

編輯:.NET實例教程

首先先描述下我們要實現的結果

這是我上一篇blog的內容

 



准備把以前的一個分詞程序貢獻出來,希望給大家一個思路。

這個程序我現在已經不用,因為有更好的算法去分,速度更快,所以這個就幫大家起一個拋磚引玉的作用。因為也不是高深的技術,所以就開源了

具體使用的結構 用到了鍵樹   詞庫使用 網上那個假冒的baidu詞庫

慢慢的,每天放一些代碼出來,大家可以先了解下鍵樹,這樣理解起來更好一些,修改起來也更有思路。

這個分詞程序分詞的速度大概在1w字/秒,使用最大截詞,資源占用30M占有,屬於速度比較慢的,不過純屬給大家一個思路。

 下面是我們要實現的結果

准備|把|以前的|一個|分詞|程序|貢獻|出來||希望|給|大家|一個|思路||||這個|程序|我|現在|已經|不用||因為|有|更好|的|算法|去|分||速度|更|快||所以|這個|就|幫|大家|起|一個|拋磚引玉|的作|用||因為|也不|是|高深|的|技術||所以|就|開源|了|||具體|使用|的|結構||用到|了|鍵|樹||||詞庫|使用||網上|那個|假冒|的|ba|i|d|u|詞庫|||慢慢|的||每天|放一|些|代碼|出來||大家|可以|先|了解|下|鍵|樹||這樣|理解|起來|更好|一些||修改|起來|也|更有|思路||||這個|分詞|程序|分詞|的|速度|大概|在|1|w|字||秒||使用|最大|截|詞||資源|占用|30M|占有||屬於|速度|比較|慢|的||不過|純屬|給|大家|一個|思路||||

我們通過基礎的數據結構實現這一種功能,這個分詞程序不涉及語義的關系,也不涉及神經網絡的使用,就是用鍵樹

下面給出本程序定義的鍵樹代碼

樹節點定義



  /**//// <summary>
    ///  樹 的節點
    /// </summary>
    public class KeyWordTreeNode
    ...{
        /**//// <summary>
        /// 構造函數
        /// </summary>
        public KeyWordTreeNode()
        ...{ ;}

        /**//// <summary>
        ///  構造函數
        /// </summary>
        /// <param name="NodeValue">樹節點值</param>
        public KeyWordTreeNode(char NodeValue)
        ...{
            _TreeNode = NodeValue;

        }


        private char _TreeNode;    //樹節點值
        /**//// <summary>
        /// 樹節點值
        /// </summary>
        public char TreeNode
        ...{
    get ...{ return _TreeNode; }
            set ...{ _TreeNode = value; }
        }

       
        private List<KeyWordTreeNode> _ChildList = new List<KeyWordTreeNode>(); //子樹

        /**//// <summary>
        /// 子樹
        /// </summary>
        public List<KeyWordTreeNode> ChildList
        ...{
            get ...{ return _ChildList; }
       set ...{ _ChildList = value; }
        }



     
    }

樹的定義,比較簡單



 /**//// <summary>
    /// 鍵樹
    /// </summary>
    public class KeyWordTree
    ...{
        private KeyWordTreeNode _Root = new KeyWordTreeNode();    //根節點
        /**//// <summary>
        /// 根節點
        /// </summary>
        public KeyWordTreeNode Root
        ...{
    get ...{ return _Root; }
            set ...{ _Root = value; }
        }

}

大家可以研究下

文章(三)會給出數據的插入

文章(四)給出數據的查詢

文章(五)給出源代碼和基礎的詞庫

本程序的數據查詢優化就留給讀者了,我這裡也只提供一個思路,不給出優化後的程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved