.NET2.0泛型就是爽!写了一个分词算法,抖一抖代码

 winform中拖一个按钮,两个RichText
using   System;
using   System.Collections.Generic;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Text;
using   System.Windows.Forms;
 
namespace   cutWord
{
        public   partial   class   Form1   :   Form
        {
                public   Form1()
                {
                        InitializeComponent();
                }

                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                        List <KeyValuePair <string,   int> >   L   =   cutWord(this.richTextBox1.Text);
                        this.richTextBox2.Text   =   " ";
                        int   count   =   0;
                        for   (int   i   =   L.Count-1;   i   > 0;   i--)
                        {
                                if   (count   >   15)
                                {
                                        break;
                                }
                                count++;
                                this.richTextBox2.Text   +=   L[i].Key   + "[ "   +   L[i].Value   + "]/n ";
                        }                                  
                }
                private   List <KeyValuePair <string,   int> >     cutWord(string   article)
                {
                        Dictionary <string,   int>   D   =   new   Dictionary <string,   int> ();
                        //if   len(escape(x))   /len(x)=6   then   isGB=true   else   isGB=false
                        //HttpUtility..::

                        System.Text.RegularExpressions.Regex   Re   =   new   System.Text.RegularExpressions.Regex(@ "[^/u4e00-/u9fa5]+ ");
                        for   (int   l   =   2;   l   <=   4;   l++)
                        {
                                for   (int   i   =   0;   i   <   article.Length-l;   i++)
                                {
                                        string   theWord   =   article.Substring(i,   l);
                                        if   (Re.Replace(theWord, " ")   ==   theWord)
                                        {
                                                if   (D.ContainsKey(theWord))
                                                {
                                                        D[theWord]++;
                                                }
                                                else
                                                {
                                                        D.Add(theWord,1);
                                                }
                                        }                                                            
                                }
                        }
               
                        List <KeyValuePair <string,   int> >   L   =   new   List <KeyValuePair <string,   int> > ();
                        foreach   (KeyValuePair <string,   int>   K   in   D)
                        {
                                if   (K.Value   >   1)
                                {
                                        L.Add(K);
                                }
                               
                                       
                        }

                        L.Sort(
                                delegate(KeyValuePair <String,   int>   a,   KeyValuePair <String,   int>   b)
                                {                                    
                                        if   (a.Value   ==   b.Value)
                                        {
                                                if   (a.Key.Length   ==   b.Key.Length)
                                                {
                                                        return   0;
                                                }
                                                else
                                                {
                                                        if   (a.Key.Length   >   b.Key.Length)
                                                        {
                                                                return   1;
                                                        }
                                                        else
                                                        {
                                                                return   -1;
                                                        }
                                                }                                                
                                        }
                                        if   (a.Value   >   b.Value)
                                        {
                                                return   1;
                                        }
                                        else
                                        {
                                                return   -1;
                                        }
                                       
                                }

                        );
                        return   (L);

                }
        }
}

测试Sohu首页关键字和频率:
女人[20]
搜狐[16]
手机[13]
游戏[13]
博客[13]
明星[11]
留学[10]
美女[9]
大学[9]
上海[9]
中国[9]
北京[9]
奥运[9]
曝光[9]
开盘[9]
视频[8]

晕!女人排第一
新浪:

中国[22]
视频[20]
手机[14]
上海[13]
新浪[13]
北京[12]
北大[12]
国际[12]
投资[11]
清华[11]
博客[11]
直播[11]
大学[10]
留学[10]
项目[9]
赚钱[9]

再看CSDN首页:
软件[16]
程序[13]
程序员[11]
序员[11]
开发[11]
大会[7]
微软[7]
我的[7]
专区[6]
技术[6]
中国[5]
使用[5]
我们[5]
模式[5]
系统[5]
人才[5]


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值