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

本次我们基于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)的更多相关文章

  1. linux中C的静态库和动态库分析

    从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...

  2. 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...

  3. 【转】分析Linux和windows动态库

    原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...

  4. 详细讲解 关于Linux静态库和动态库的分析

    基本概念 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: ...

  5. 关于Linux静态库和动态库的分析

    关于Linux静态库和动态库的分析 关于Linux静态库和动态库的分析 1.什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可运行代码的二进制形式.能够被操作系统加 ...

  6. UNIX环境下用C语言写静态库与动态库

    静态库,动态库用UNIX 的术语来说,或者叫做归档文件(archive 常以.a 结尾)和共享对象(share object 常以lib 开头.so 结尾)更为准确.静态库,动态库可能是WINDOWS ...

  7. Linux环境g++编译GDAL动态库

    一.编译步骤 解压下载的GDAL源程序,并在命令行中切换到解压目录. tar -xzvf gdal-2.1.3.tar.gz cd gdal-2.1.3 GDAL可通过configure来实现一些自定 ...

  8. 【推荐】CentOS安装gcc-4.9.4+更新环境+更新动态库

    注:以下所有操作均在CentOS 6.8 x86_64位系统下完成. CentOS上yum安装的gcc版本过低(4.4.7),在安装某些软件的时候不支持,所以这里需要对其进行升级. #gcc的安装# ...

  9. makefile与动态链接库案例分析——动态库链接动态库

    http://blog.csdn.net/huqinwei987/article/details/50517780 背景:效率考虑,要重用把服务器主备机方案,以库Libmdpha(高可用)的形式加进主 ...

  10. 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 删除光标 ...

随机推荐

  1. MySQL实战实战系列 01 基础架构:一条SQL查询语句是如何执行的?

    这是专栏的第一篇文章,我想来跟你聊聊 MySQL 的基础架构.我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于 MySQL 的学习也是这样. ...

  2. 加密 K8s Secrets 的几种方案

    前言 你可能已经听过很多遍这个不算秘密的秘密了--Kubernetes Secrets 不是加密的!Secret 的值是存储在 etcd 中的 base64 encoded(编码) 字符串.这意味着, ...

  3. Ds100p -「数据结构百题」51~60

    纪念 数据结构一百题50题了呢,该过半周年啦~~~~ LYC和WGY半年的努力让这个几乎玩笑一般的系列到了现在. 今后也请多多关照啦. 祝愿dp100p早日过半 51.CF1000F One Occu ...

  4. elementui vue表单提交向别的组件传参失效 路由传参格式

    目录 表单提交向别的组件传参失效 路由传参格式 表单提交向别的组件传参失效 methods: { submitForm(formName) { this.$refs[formName].validat ...

  5. Redis系列24:Redis使用规范

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  6. 本计划在 .NET 8 中推出的 WASI 推迟到 .NET 9

    本计划在 .NET 8 中推出的 WASI  已推迟到 .NET 9,请参阅 Github 上的 WASI 跟踪问题. 在.NET 8 Preview 4 开始支持生成与 WASI 兼容的 .wasm ...

  7. python系列:argparse详解 外部传参给python的库

    一.argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数. ar ...

  8. Chrome Extensions v3 迁移清单

    一.前置问题 1.1为什么需要迁移 v3? Chrome 计划完全停止 v2 版本维护,后续 v2 版本将无法上架谷歌插件商店,除此之外,未来新版本 Chrome 对于 v2 版本插件的限制会越来越大 ...

  9. Util应用框架Web Api开发环境搭建

    要使用Util应用框架开发项目,首先需要搭建合适的开发环境. 迈出第一步,对于很多.Net新人可能并不简单. 如果你对.Net环境并不熟悉,请尽量按照本文档进行操作. 操作系统 请安装 Windows ...

  10. 16.1 Socket 端口扫描技术

    端口扫描是一种网络安全测试技术,该技术可用于确定对端主机中开放的服务,从而在渗透中实现信息搜集,其主要原理是通过发送一系列的网络请求来探测特定主机上开放的TCP/IP端口.具体来说,端口扫描程序将从指 ...