• 博客开通了,标记一个:) a new start [2007-12-29 13:53]
    共14页 1 2 3 4 5 6 7 8 9 10 下一页 最后一页
  • Java字符串split方法的小陷阱

    2009-07-29 17:07:57 by deepblue

    今天在写一个Java字符串切分程序时,发现切分后的计数一直有问题,调了半天才找到原因。。。

    下面先来看一个问题:有字符串str=“string split test” ,使用String类的split方法,根据空格切分后的字符串数组有多少个元素?我们可以用下面的程序来测试:

    String str = "string split test";
    String[] result = str.split(" ");
    System.out.println("Result size: " + result.length);
    for (String s : result)
    System.out.println(s);

    程序输出为:

    Result size: 3
    string
    split
    test

    嗯,和我们想的一样,原来的字符串被空格切分成了3个新的字符串。

    再来看一个问题:有字符串str=“” (空字符串),使用String类的split方法,根据空格切分后的字符串数组有多少个元素?

    还是用程序来测试:

    str = "";
    result = str.split(" ");
    System.out.println("Result size: " + result.length);
    for (String s : result)
    System.out.println(s);

    程序输出为:

    Result size: 1

    这里居然是1,而不是我之前认为的0,里面的元素是与原字符串相同的空字符串。

    仔细想想,其实是有道理的。无论原字符串的内容是什么,通过split切分后,如果原字符串中没有出现切分定界符,那么切分结果就返回以原字符串为原始的字符串数组;如果原字符串中有切分定界符,则从定界符处将原字符串断开,将生成的新字符串按顺序以数组的形式返回。

  • 中文分词与词性标注测评程序

    2009-07-21 00:53:03 by deepblue

    前几天为了测试中文分词和词性标注程序的效果,写了一个简单的测试程序,用于测试分词和词性标注结果的precision,recall和F-score。下面是测试输出:

    --------------Evaluation Result-------------

    Word Count Standard: 69953, Word Count Test: 69231, Correct Segmented: 67212
    P-Word=0.9708367638774538
    R-Word=0.9608165482538276
    F-Word=0.9658006667433038

    POS Count Standard: 69953, POS Count Test: 69231, Correct Segmented: 64159
    P-POS=0.9267380219843712
    R-POS=0.9171729589867482
    F-POS=0.9219306816875502

    测试程序附在此,需要的朋友可以直接用: 中文分词与词性标注测试程序

     

  • 挫败感

    2009-06-10 21:19:16 by deepblue

    最近两个月受了不少打击,产生了一些挫败感。。。

    庆幸的是现在还不晚,及时让我更加清楚地认识了自己,彻底消灭了我曾经那莫名的自负感,真心感谢这两个月来给我打击的人!

    现在开始,奋起直追!

  • Google Developer Day 2009

    2009-06-06 17:13:05 by deepblue

    昨天参加了Google Developer Day 2009,形式和去年一样,主要是介绍Google的新产品和新技术,不过感觉今年组织得不如去年好,可能是因为今年的人数太多吧,近3000人,不过即使如此,参会的邀请函也不应该漏发或重发吧。。。而且食物的质量明显有所下降,包括茶歇和晚宴,不过今年除了给参会者发送了一件T-shirt外,还对填了4张分会场参会回执的朋友每人送了一个双肩电脑包,还不错。

    好了,废话就不说了,上图吧。。。(手机拍的,效果不是很好)
    ...

  • 近日流水帐

    2009-06-06 16:55:04 by deepblue

    很久没更新blog了,记点流水帐。

    刚才,发现twitter的api访问有问题,导致blog首页打开非常慢,暂时中首页去掉twitter内容。

    昨天去参加了Google Developer Day 2009,总体感觉和去年差不多,主要还是介绍Google的新产品和相关技术,还没正式发布的Wave是今年绝对的明星,值得期待;又得了一件Google T-shirt。

    前几天参加了篮球赛,替补。。。不过命中率保持100%,1投1中:),而且是在眼镜被打掉的情况下凭感觉投进的,哈哈。

    前段时间终于发了第一篇英文论文,被老板批评了英文写作还有很大问题。。。

    更前段时间联系上了一个十几年没见到老朋友,聊得很高兴。

    更更前段时间出了趟差,第二次去上海。为了迎接世博会,外滩在修路;金茂已经不是第一高楼了,记得上次还在金茂顶层朝着北京和家乡的方向各照了一张相。

    更更更前段时间。。。记不太清楚了。。。

     

  • 不用临时变量,交换两个数的值

    2009-04-19 16:15:01 by deepblue

    有两个整型变量a,b,如何在不使用其他临时变量的情况下交换a,b的值?可能这个问题大家都非常熟悉了吧。

    以前我用的是这个方法:

    a=a+b;
    b=a-b;
    a=a-b;

    其实下面这种方法由于是用的位运算,因此效率更高:

    a=a^b; (1)
    b=b^a; (2)
    a=a^b; (3)

    其中,^为位运算的异或运算。证明这个结论也很简单,为了表述得清楚,我们令原始值分别为a,b,计算过程中产生的新值为a_new,b_new。

    由(1)得:a_new=a^b,即此时变量a中的值等于a_new。而(2)中,等式右边的a的值实际上已经等于a_new了,因此,由(2)得b_new=b^a_new=b^a^b。我们知道,异或运算满足交换律和结合律,因此进一步可以得到:b_new=b^a_new=b^a^b=b^b^a=0^a=a,即变量b的值变成了b_new,也就是变量a的原始值。在(3)中,等式左边变量a和b的值实际上已经等于a_new和b_new了,令等式左边的a为a_final,因此可以得到a_fianl=a_new^b_new=a^b^a=a^a^b=0^b=b,即变量a的值最终等于a_final,也就是变量b的原始值。至此,变量a,b的原始值完成了交换。

  • Catalan数

    2009-04-15 13:48:31 by deepblue

    今天才知道Catalan数这个东西。。。汗~,赶紧在网上查了资料补补课。

    令h(1)=1,catalan数满足递归式:

    h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)

    即:

    Catalan数递推公式

    Catalan数的通项公式为:

    Catalan数通项公式

    该公式的推导过程可以看参考资料[2]的内容,在此不再累述。

    我还看到有人争论Catalan数的通项公式应该是这样的:

    Catalan数通项公式2

    其实这两个公式本质是一样的,公式(1)是以h(1)=1为起始项,而公式(2)是以h(0)=1为起始项。

    关于Catalan数的应用可以参考这里

    这里举个应用Catalan数的例子:n个节点能组成多少种形态的二叉树?(注:每个节点相同;形态不同的左右子树对调后形成的二叉树算新的形态的二叉树)

    可以分析,当n=1时,只有1个根节点,则只能组成1种形态的二叉树,令n个节点可组成的二叉树数量表示为h(n),则h(1)=1;

    当n=2时,1个根节点固定,还有n-1个节点,可以作为左子树,也可以作为右子树,即:h(2)=h(0)*h(1)+h(1)*h(0)=2,则能组成2种形态的二叉树。这里h(0)表示空,所以只能算一种形态,即h(0)=1;

    当n=3时,1个根节点固定,还有n-1=2个节点,可以在左子树或右子树,即h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=5,则能组成5种形态的二叉树。

    以此类推,当n>=2时,可组成的二叉树数量为h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0)种,即符合Catalan数的定义,可直接利用通项公式(2)得出结果。

     

    参考资料:
    1.Catalan数,http://baike.baidu.com/view/1163998.htm
    2.Catalan数的分析和应用,http://blog.csdn.net/dlyme/archive/2008/06/10/2532831.aspx

  • 工作到现在

    2009-03-28 02:43:05 by deepblue
    好久没熬夜了,工作到现在,记一笔。。。