Win11环境Mecab日语分词和词性分析以及动态库DLL not found问题(Python3.10)

日语因为存在假名,会导致翻译软件进行翻译时机翻味道过重的问题,比如積ん読(つんどく)这个词,大多数软件会翻译成:堆积的读,但其实是明明买了书却不读,光放着的意思。有时候也需要单独查句子中的单词释义来理解句子的意思,但一看下去全是假名,无法像中文或者英文那样进行简单的分词操作。

本次我们基于Python3.10的三方库Mecab来对日语进行分词和词性分析。

安装和配置Mecab

首先下载最新的Mecab0.996的64位安装包:

复制代码
https://github.com/ikegami-yukino/mecab/releases

随后双击进行安装,注意编码选择国标码utf-8:

默认的Shift_JIS是日本电脑系统常用的编码表,能容纳全形及半形拉丁字母、平假名、片假名、符号及日语汉字。

当然如果您的电脑是日本系统,那就选择Shift_JIS,但utf-8是通用的。

安装成功后,最好把bin目录添加到系统的环境变量中。

动态库DLL not found问题

随后安装对应的Python依赖:

复制代码
pip install mecab-python3

随后导入到Mecab库可能会报DLL not found。

这是因为系统找不到Mecab的运行库libmecab.dll

此时,可以考虑将Mecab安装目录中的bin目录里的libmecab.dll拷贝到系统的C:/windows/system32目录中。

因为在Windows操作系统中,DLL文件是动态链接库文件,其中包含许多可供其他程序调用的功能。如果您想要让一个程序能够使用一个DLL文件,需要确保该DLL文件已经正确地安装到系统目录中,而system32就是Win11系统的动态库安装目录。

言而总之,将DLL文件放到C:\Windows\System32目录下可以让其对其他程序可见,但需要注意用户权限问题。

Mecab日语分词和词性解析

随后编写代码test.py:

复制代码
import MeCab  
  
CONTENT = "私はpythonを使用して、プログラミングを勉強しています。積ん読"  
  
tagger = MeCab.Tagger()  
parse = tagger.parse(CONTENT)  
  
print(parse)

运行结果:

复制代码
PS D:\jiyun\积云\boo3_public> python -u "d:\jiyun\积云\boo3_public\mecab_test.py"  
私      ワタクシ        ワタクシ        私-代名詞       代名詞                  0  
は      ワ      ハ      は      助詞-係助詞  
python  python  python  python  名詞-普通名詞-一般                      0  
を      オ      ヲ      を      助詞-格助詞  
使用    シヨー  シヨウ  使用    名詞-普通名詞-サ変可能                  0  
し      シ      スル    為る    動詞-非自立可能 サ行変格        連用形-一般     0  
て      テ      テ      て      助詞-接続助詞  
、                      、      補助記号-読点  
プログラミング  プログラミング  プログラミング  プログラミング-programming      名詞-普通名詞-サ変可能                  4  
を      オ      ヲ      を      助詞-格助詞  
勉強    ベンキョー      ベンキョウ      勉強    名詞-普通名詞-サ変可能                  0  
し      シ      スル    為る    動詞-非自立可能 サ行変格        連用形-一般     0  
て      テ      テ      て      助詞-接続助詞  
い      イ      イル    居る    動詞-非自立可能 上一段-ア行     連用形-一般     0  
ます    マス    マス    ます    助動詞  助動詞-マス     終止形-一般  
。                      。      補助記号-句点  
積ん読  ツンドク        ツンドク        積ん読  名詞-普通名詞-一般

可以看到这里将私はpythonを使用して、プログラミングを勉強しています。積ん読这个完整的日文句子切分成了单词,并且标注了词性,比如前文提到的積ん読这种词。

如果是大型的文本,也能以读文件的方式来进行切分和释义:

复制代码
import MeCab  
  
FILE_NAME = "sample.txt"  
  
with open(FILE_NAME, "r", encoding="utf-8") as f:  
    CONTENT = f.read()  
  
tagger = MeCab.Tagger()  
parse = tagger.parse(CONTENT)  
  
print(parse)

注意这里读文件时需要声明编码是utf-8。

程序返回:

复制代码
私      名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ  
は      助詞,係助詞,*,*,*,*,は,ハ,ワ  
python  名詞,一般,*,*,*,*,*  
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ  
使用    名詞,サ変接続,*,*,*,*,使用,シヨウ,シヨー  
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ  
て      助詞,接続助詞,*,*,*,*,て,テ,テ  
、      記号,読点,*,*,*,*,、,、,、  
プログラミング  名詞,サ変接続,*,*,*,*,プログラミング,プログラミング,プログラミング  
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ  
勉強    名詞,サ変接続,*,*,*,*,勉強,ベンキョウ,ベンキョー  
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ  
て      助詞,接続助詞,*,*,*,*,て,テ,テ  
い      動詞,非自立,*,*,一段,連用形,いる,イ,イ  
ます    助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス  
。      記号,句点,*,*,*,*,。,。,。 

结语

Mecab最初由奈良先端科学技术大学院大学开发,目前由工藤拓(Taku Kudou)维护,作为Google日语输入项目的一部分。MeCab的名称源自开发者最喜欢的食物"mekabu"(和布蕪),这是一道由裙带菜叶制成的日本菜肴。

MeCab的优势包括准确的分析日语、快速的分析速度以及对不同操作系统的跨平台支持。 MeCab是日语文本处理的重要工具,为日语文本分析和处理提供了强大的支持。

相关推荐
我送炭你添花15 分钟前
Pelco KBD300A 模拟器:06+2.Pelco KBD300A 模拟器项目重构指南
python·重构·自动化·运维开发
Swizard17 分钟前
别再只会算直线距离了!用“马氏距离”揪出那个伪装的数据“卧底”
python·算法·ai
站大爷IP18 分钟前
Python函数与模块化编程:局部变量与全局变量的深度解析
python
我命由我1234527 分钟前
Python Flask 开发问题:ImportError: cannot import name ‘Markup‘ from ‘flask‘
开发语言·后端·python·学习·flask·学习方法·python3.11
databook35 分钟前
掌握相关性分析:读懂数据间的“悄悄话”
python·数据挖掘·数据分析
全栈陈序员1 小时前
【Python】基础语法入门(二十)——项目实战:从零构建命令行 To-Do List 应用
开发语言·人工智能·python·学习
jcsx1 小时前
如何将django项目发布为https
python·https·django
岁月宁静1 小时前
LangGraph 技术详解:基于图结构的 AI 工作流与多智能体编排框架
前端·python·langchain
百锦再1 小时前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
岁月宁静1 小时前
LangChain 技术栈全解析:从模型编排到 RAG 实战
前端·python·langchain