概述
#### 要对一份Excle存在的上K条由日语汉字组成的书名按50音排序。
1. 尝试直接用中文系统环境下的Excle直接排序 (Windows也应该是针对每个字符对应的编码顺序进行排序的。明显地看假名排在汉字前面)
2. 尝试用日语操作环境下的Excle排序功能(貌似非日语环境下输入的内容无法提取假名)
3. 尝试用C#的本地化排序 [↗](http://stackoverflow.com/questions/6900061/sorting-japanese-text-by-katakana-in-c-sharp)
4. 尝试用数据库排序 (把数据插入数据库,然后通过数据库内部的排序机制读取)
5. 尝试用Python
6. 尝试用bash
7. 其实以上都不对,考虑到日语的特殊性。如果要想字典那样排序,那么就一定需要日语汉字对应的(平)假名。提取假名就需要利用到日文分词了。比如使用 [mecab](http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html)
### 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对每条书名进行转换合成
<pre>% mecab -Oyomi `INPUT_FILE_NAME` -o `OUTPUT_FILE_NAME`</pre>
搞定..
然后还想试试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
<pre>
#!/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++']) #直接输入
])
</pre>
> $ 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 即可。
<pre>
$ sudo vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib #加这句
$ sudo /sbin/ldconfig
</pre>
**以后就可以直接通过Python来调用MeCab了。**
(完)
####更多参考文档
* mecab-pythonのインストール方法 http://tatsuyaoiw.hatenablog.com/entry/20120414/1334405065
* MeCabをPythonから使う注意点とか http://shogo82148.github.com/blog/2012/12/15/mecab-python/
* WindowsでMeCab Pythonを使うhttp://aidiary.hatenablog.com/entry/20101121/1290339360
* CentOSにMeCabを導入
http://d.hatena.ne.jp/yuboolike/20121207/1354869309
最后
以上就是妩媚冰淇淋为你收集整理的用MeCab解决日文汉字的排序问题的全部内容,希望文章能够帮你解决用MeCab解决日文汉字的排序问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复