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是日语文本处理的重要工具,为日语文本分析和处理提供了强大的支持。
Win11环境Mecab日语分词和词性分析以及动态库DLL not found问题(Python3.10)的更多相关文章
- linux中C的静态库和动态库分析
从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...
- 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...
- 【转】分析Linux和windows动态库
原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...
- 详细讲解 关于Linux静态库和动态库的分析
基本概念 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: ...
- 关于Linux静态库和动态库的分析
关于Linux静态库和动态库的分析 关于Linux静态库和动态库的分析 1.什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可运行代码的二进制形式.能够被操作系统加 ...
- UNIX环境下用C语言写静态库与动态库
静态库,动态库用UNIX 的术语来说,或者叫做归档文件(archive 常以.a 结尾)和共享对象(share object 常以lib 开头.so 结尾)更为准确.静态库,动态库可能是WINDOWS ...
- Linux环境g++编译GDAL动态库
一.编译步骤 解压下载的GDAL源程序,并在命令行中切换到解压目录. tar -xzvf gdal-2.1.3.tar.gz cd gdal-2.1.3 GDAL可通过configure来实现一些自定 ...
- 【推荐】CentOS安装gcc-4.9.4+更新环境+更新动态库
注:以下所有操作均在CentOS 6.8 x86_64位系统下完成. CentOS上yum安装的gcc版本过低(4.4.7),在安装某些软件的时候不支持,所以这里需要对其进行升级. #gcc的安装# ...
- makefile与动态链接库案例分析——动态库链接动态库
http://blog.csdn.net/huqinwei987/article/details/50517780 背景:效率考虑,要重用把服务器主备机方案,以库Libmdpha(高可用)的形式加进主 ...
- centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标前所有字符 Ctrl+r 搜索命 hash命令 Ctrl+左箭头/右箭头 cd命令 第三节课
centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标 ...
随机推荐
- Solution -「香港网络赛 2016」A+B Problem
Description Link. 给出一个长度为 \(n\) 的序列 \(a\),问有序三元组 \((a_{i},a_{j},a_{k})\) 使得 \(i\neq j\neq k\) 且 \(a_ ...
- VS Code代码提示( AcWing算法模板,C++实现)
算法模板提取于AcWing上的代码提示 作者:yxc 链接:https://www.acwing.com/file_system/file/content/whole/index/content/21 ...
- Django框架——Django与Ajax、分页器
文章目录 1 Django与Ajax 一 什么是Ajax 优点: 二 基于jquery的Ajax实现 Ajax-->服务器-->Ajax执行流程图 三 案例 一 通过Ajax,实现前端输入 ...
- 服务链路追踪 —— SpringCloud Sleuth
Sleuth 简介 随着业务的发展,系统规模变得越来越大,微服务拆分越来越细,各微服务间的调用关系也越来越复杂.客户端请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,几平每一个请求 ...
- db-cdc之mysql 深入了解并使用binlog
1.什么是binlog? 2.binlog可以用来干什么? 3.怎么样使用binlog? binlog是记录所有数据库表结构变更(例如CREATE.ALTER TABLE-)以及表数据修改(INSER ...
- Util应用框架 UI 开发快速入门
本文是Util应用框架 Angular UI 开发快速入门教程. Util前端技术概述 Util 应用框架目前仅支持用于开发管理后台的 UI. 本文介绍了 Util UI 的技术特点和功能支持. UI ...
- 高精度加法(C语言实现)
高精度加法(C语言实现) 介绍 众所周知,整数在C和C++中以int ,long,long long三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆long ...
- 深度解析BERT:从理论到Pytorch实战
本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型.我们探讨了BERT的核心特点,包括其强大的注意力机制和与 ...
- BFS广搜小谈
个人认为BFS比DFS难度要大一些,所以来这里做个笔记. 比较可怜的是本蒟蒻并没有找到BFS这个东西解题有什么规律,所以我只能粘上3个代码. 模板 当然一个差不多点儿的模板还是要有的. //模板1 # ...
- 滚动更新和回滚部署在 Kubernetes 中的工作原理
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 在过去的几年中,Kubernetes 在生产环境中被广泛使用,它通过其声明式 API 提供了大量解决方案,用于编排容器. ...