← All Posts

安装与自定义使用MeCab

日语分词器MeCab的3种使用方式

关于MeCab#

MeCab是什么?

MeCab (和布蕪)とは (以下是MeCab作者发布的简介)

MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所共同研究ユニットプロジェクトを通じて開発されたオープンソース形態素解析エンジンです。言語,辞書,コーパスに依存しない汎用的な設計を基本方針としています。パラメータの推定に Conditional Random Fields(CRF) を用 いており,ChaSenが採用している隠れマルコフモデルに比べ性能が向上しています。また、平均的に ChaSen,Juman,KAKASIより高速に動作します。ちなみに和布蕪(めかぶ)は,作者の好物です。


安装/使用MeCab的3种方式#

1. 国立国語研究所发布的网页版: Web茶まめ#

直接访问Web茶まめ以在线使用MeCab分词器

优点:

  • 新手友好,操作简单,几乎不需要学习成本
  • 分词功能较为齐全,可选择excel、大納言等多种导出形式

缺点:

  • 功能相对较少,无法深度自定义
  • 面对大文本数据时,难以实现自动化,建议使用Python+MeCab模块+词典包

2. 安装MeCab应用程序(windows)#

  • 下载并安装: mecab-0.996.exe

应用本体不是很大,建议安装到C盘.若想自定义安装到D盘,需要安装完以后,在系统中添加环境变量
MeCab运行需要使用词典文件,安装完成后会自动生成ipadic词典(太旧且无更新),
强烈建议替换为自定义词典包!!!


  • 自定义词典包: 此处以国立国語研究所发布的最新版unidic-cwj-202512为例
  1. 下载完unidic-cwj-202512.zip后,解压到D盘根目录(或C盘)下的同名文件夹unidic-cwj-202512
  2. 复制unidic-cwj-202512文件夹的路径"D:\unidic-cwj-202512"
  3. 找到刚安装的MeCab软件的文件夹,用记事本打开"D:\MeCab\etc\mecabrc"这个文件,安装在C盘也一样
  4. 将第2步中的"D:\unidic-cwj-202512"粘贴到dicdir =后面,像这样:dicdir = D:\unidic-cwj-202512
  5. 这样就自定义好了MeCab在运行时使用的字典

  • 接下来是在windows上使用Mecab
  1. 首先在电脑左下角的搜索框搜索PowerShell,建议右键以管理员身份运行
  2. 由于编码格式限制,在正式使用MeCab前,建议统一PowerShell面板的编码格式

在命令行输入以下:
$OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
强制使用UTF8编码,以避免显示乱码.

  1. 命令行输入指令mecab,会自动进入mecab程序,以等待待分词的文本文件输入

以下分别介绍手动和文件两种方式进行输入输出

手动输入比较简单,直接复制想要分词的文本,粘贴到命令行中,
回车后,屏幕会自动展示分词结果,结果可直接复制

如果想传入一整个想要分词的文件(注:需准备.txt格式,其他格式的文件先转成.txt文本文件)
具体操作:在命令行中输入以下(注:使用 -o 指定输出文件,-O 指定输出格式,注意区分大小写!)
mecab "C:\Users\...\test.txt" -o "C:\Users\...\ed.txt" -Ounidic
一些说明:
"C:\Users\...\test.txt" 这个是你想要上传的分词的文件的路径,
"C:\Users\...\ed.txt" 这个是你想存放分词结果文件的路径,
-Ounidic 表示:使用-O符号,指定分词模板为:unidic (这个是初始模板,可自定义,见文末自定义分词)


3. 安装Python以搭配使用mecab(推荐)#

  • 下载并安装Python,以及一个编辑器(Pycharm、Vscode、Zed等都可以~)
  • 将Python添加到环境变量

windows左下角搜索环境变量,打开编辑系统环境变量,点击右下角环境变量
点击xx的用户变量下的Path,点击编辑后,再点击新建
将安装的Python文件夹地址复制,粘贴,一直点确定直至退出环境变量设置
示例:D:\Python3.12.9\

  • 使用pip包管理器下载MeCab包

PowerShell中的命令行输入:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
这行命令主要是一键绑定清华下载源,不然在国内使用pip安装任何包都会很痛苦

  • PowerShell中的命令行输入:pip install mecab-python3以安装MeCab包

  • 打开编辑器,配置好Python环境(由于各个编辑器的操作不一样,不会的可以搜一下教程,b站上有很多~)


现在已经万事具备,让我们开始吧~

  1. 输入以下代码,以导入MeCab包python
import MeCab
# 使用MeCab分词前,需要指定使用的字典;然后初始化分MeCab词器
# 自定义使用的字典unidic-cwj-202512,unidic_path为自定义字典的地址
unidic_path = r"D:\unidic-cwj-202512"
  1. 输入以下代码以初始化MeCab
# 输入 tagger = MeCab.Tagger() 初始化分词器,括号中为自定义参数
# ()中-r "{mecabrc}"用于指定空文件,-d "{unidic_path}"用于指向自定义词典地址
tagger = MeCab.Tagger(f'-r nul -d "{unidic_path}"') # 默认输出详细分词信息
  1. 分词文本或文件并打印结果
text = "勉強は大好きだ。"
result = tagger.parse(text)
print(result)
# 由于未指定分词模式,默认展示详细的分词信息
>>>
- 名詞,普通名詞,サ変可能,*,*,*
日本橋 名詞,固有名詞,地名,一般,*,*,ニホンバシ,ニホンバシ,日本橋,ニホンバシ,日本橋,ニホンバシ,,*,*,*,*,*,*,地名,ニホンバシ,ニホンバシ,ニホンバシ,ニホンバシ,0,*,*,7830455558742528,28487
は 助詞,係助詞,*,*,*,*,,,,,,,,*,*,*,*,*,*,係助,,,,,*,"動詞%F2@0,名詞%F1,形容詞%F2@-1",*,8059703733133824,29321
いい 形容詞,非自立可能,*,*,形容詞,連体形-一般,ヨイ,良い,いい,イー,いい,イー,,*,*,*,*,*,*,,イイ,イイ,イイ,イイ,1,C3,*,10716948459561665,38988
ところ 名詞,普通名詞,副詞可能,*,*,*,トコロ,,ところ,トコロ,ところ,トコロ,,ト濁,基本形,*,*,*,"B1WS2WB3WB4WBjS,B1WS2WB8SjS",,トコロ,トコロ,トコロ,トコロ,"3,0",C2,*,7249372253397504,26373
です 助動詞,*,*,*,助動詞-デス,終止形-一般,デス,です,です,デス,です,デス,,*,*,*,*,*,*,助動,デス,デス,デス,デス,*,"形容詞%F2@-1,動詞%F2@0,名詞%F2@1",*,7051468750332587,25653
ね 助詞,終助詞,*,*,*,*,,,,,,,,*,*,*,*,*,*,終助,,,,,*,"動詞%F1,名詞%F1,形容詞%F1",*,7903847959896576,28754
。 補助記号,句点,*,*,*,*,*,,,*,,*,記号,*,*,*,*,*,*,補助,*,*,*,*,*,*,*,6880571302400,25
EOS

自定义分词模式#

由于MeCab指定分词模式的具体操作在powershell和python中一样,以下以python为例

# 注:所有自定义的分词模式需在字典的dicrc文件中增加对应字段!dicrc自带的模式则可直接使用.
# 如自带的简洁模式 wakati ,句子「勉強は大好きだ。」分完词如右所示: 勉強 は 大好き だ 。
# 具体操作为:初始化MeCab时在语句最后添加: -Owakati
# 即横杠-后加大写字母O再加分词模式,如下所示:
tagger = MeCab.Tagger(f'-r nul -d "{unidic_path}" -Owakati')
text = "勉強は大好きだ。" # 这个是想要分词的文本
result = tagger.parse(text)
print(result)
>>> 勉強 は 大好き だ 。

如果在字典的dicrc文件中自定自定义了分词模式,输入以下代码,以在指定字典的同时自定义分词模式:

tagger = MeCab.Tagger(f'-r nul -d "{unidic_path}" -O某自定义分词模式')

下例,keitaiso是笔者在dicrc中自定义的分词模式

import MeCab
tagger = MeCab.Tagger(f'-r nul -d "{unidic_path}" -Okeitaiso')
text = "-日本橋はいいところですね。"
result = tagger.parse(text)
print(result)
>>>
- 未定義語
日本橋 ニホンバシ 名詞,固有名詞
は は 助詞,係助詞
いい 良い 形容詞,非自立可能
ところ 所 名詞,普通名詞
です です 助動詞,
ね ね 助詞,終助詞
。 。 補助記号,句点