要对一份Excle存在的上K条由日语汉字组成的书名按50音排序。

  1. 尝试直接用中文系统环境下的Excle直接排序 (Windows也应该是针对每个字符对应的编码顺序进行排序的。明显地看假名排在汉字前面)
  2. 尝试用日语操作环境下的Excle排序功能(貌似非日语环境下输入的内容无法提取假名)
  3. 尝试用C#的本地化排序
  4. 尝试用数据库排序 (把数据插入数据库,然后通过数据库内部的排序机制读取)
  5. 尝试用Python
  6. 尝试用bash
  7. 其实以上都不对,考虑到日语的特殊性。如果要想字典那样排序,那么就一定需要日语汉字对应的(平)假名。提取假名就需要利用到日文分词了。比如使用 mecab

CentOS 5.x 具体手顺


安装mecab

  • 下载mecab本体
    $ wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz (我用最新版一直安装不成功,于是退回0.98版)
    
  • 解压安装

    % cd /usr/local/src
    % tar zxfv mecab-X.X.tar.gz
    % cd mecab-X.X
    % ./configure
    % make clean; make
    % make check
    % make install

安装词典

$ wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zxf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801.tar.gz
$ ./configure –with-charset=utf-8
$ make $ sudo make install

经行到此处,已经可以让其标注假名读音。效果如下

之后可以利用bash对每条书名进行转换合成

% mecab -Oyomi `INPUT_FILE_NAME` -o `OUTPUT_FILE_NAME`
搞定.. 然后还想试试mecab-python扩展,先把mecab升级到0.993 发现仍旧报错 **error: command 'gcc' failed with exit status 1** 查明是python-dev没装,继续装.. > $ yum list | grep python-dev > $ sudo yum -y install python-dev* 之后再把yum groupinstall "Development Tools" (build-essential) glibc-headers(libc6-dev)更新了一把,又出现 > ./.libs/libmecab.so: undefined reference to `__sync_val_compare_and_swap_4' 错误 最后还发现gcc的版本自带4.1太低了,升级到4.4。 > # yum -y install gcc44 gcc44-c++ 再次尝试安装0.98版以上的版本 > # ./configure --with-charset=utf8 --enable-utf8-only CXX='g++44' > # make && make install #### 终于可以开始安装mecab-python扩展了 > 下载mecab-python [↗](http://code.google.com/p/mecab/downloads/list) > 解压 $ tar -xzf mecab-python-0.996.tar.gz > 安装 $ python setup.py build 提示出错,于是直接打开setup.py
#!/usr/bin/env python

from distutils.core import setup,Extension,os
import string

def cmd1(str):
    return os.popen(str).readlines()[0][:-1]

def cmd2(str):
    return string.split (cmd1(str))

setup(name = "mecab-python",
    version = '0.993',  #直接输入
    py_modules=["MeCab"],
    ext_modules = [
        Extension("_MeCab",
            ["MeCab_wrap.cxx",],
            include_dirs=[r"/usr/local/include"], #直接输入
            library_dirs=[r"/usr/local/lib"], #直接输入
            libraries=['mecab stdc++']) #直接输入
            ])
> $ sudo python setup.py install 这下终于把python扩展安装好了,赶紧试一下… 当>>> import MeCab 后提示又出错了 ImportError: libmecab.so.2: cannot open shared object file: No such file or directory 貌似是读不到libmecab.so.2这个文件,而它在/usr/local/lib下,网上查了似乎只需要把/usr/local/lib内写入 /etc/ld.so.conf 即可。
$ sudo vim /etc/ld.so.conf 
include ld.so.conf.d/*.conf 
/usr/local/lib  #加这句
$ sudo /sbin/ldconfig

以后就可以直接通过Python来调用MeCab了。

(完)

####更多参考文档