2013年5月6日 星期一

perl one liner開utf8檔的寫法

一開始是因為要試regular expression在match 單一中文字時,竟然無法成功。眼看 http://stackoverflow.com/questions/12312310/how-to-match-chinese-characters-in-perl?lq=1 上寫得斬釘截鐵,我開始懷疑起自己來了…

結果寫了個.pl檔試試,一開始也失敗,但是開始發現,問題似乎是因為沒有以utf8格式開檔,後來找到 http://zenoga.tumblr.com/post/40094864918/unicode-aware-perl-one-liners 才解決了這個問題。看起來沒什麼,不過可花了我半個早上啊…

以下這行就是結果,可以拿來斷中文句子

perl '-Mopen qw/:std :utf8/' -ne 'while(m/(\p{Han}+)/g){print "$1\n";}'   test.simp.utf8

據說詞頻的統計要用到 pat-tree / suffix tree / trie,估狗了一下覺得只有 http://search.cpan.org/~avif/Tree-Trie-1.9/Trie.pm 適合中文詞頻統計之用。有個現成的斷詞模組叫mmseg, 用法如下

perl '-Mopen qw/:utf8/' '-MLingua::ZH::MMSEG' -Mutf8 -ne 'print join "\n", mmseg'  jian.txt

下一步就是要把結果丟給AI::Categorizer或AI::Classifier來看看結果如何…

20170208更新:
windows 平台上指令請改為
perl "-Mopen qw/:utf8/" -MLingua::ZH::MMSEG -Mutf8 -ne "print join \"\n\", mmseg"  XXX

沒有留言:

張貼留言