目录

通过python生成日语对应的平假名音标和罗马音

​ 1 环境准备

pip install pykakasi
pip install mecab-python

2 源码

import MeCab
import pykakasi

text = "私は学生です"

# --- 分词 ---
tagger = MeCab.Tagger("-Owakati")  # -Owakati 输出分词
words = tagger.parse(text).strip().split()

# --- 平假名转换 ---
kakasi_hira = pykakasi.kakasi()
kakasi_hira.setMode("J", "H")  # 汉字 -> 平假名
kakasi_hira.setMode("K", "H")  # 片假名 -> 平假名
kakasi_hira.setMode("H", "H")  # 平假名保持平假名
conv_hira = kakasi_hira.getConverter()

hira_words = [conv_hira.do(word) for word in words]
hira_text = " ".join(hira_words)

# --- 罗马音转换 ---
kakasi_romaji = pykakasi.kakasi()
kakasi_romaji.setMode("J", "a")
kakasi_romaji.setMode("K", "a")
kakasi_romaji.setMode("H", "a")
kakasi_romaji.setMode("r", "Hepburn")
conv_romaji = kakasi_romaji.getConverter()

romaji_words = [conv_romaji.do(word) for word in words]
romaji_text = " ".join(romaji_words)

print("原文:", text)
print("平假名:", hira_text)
print("罗马音:", romaji_text)

3 执行py

pip a.py

结果:

原文: 私は学生です
平假名: わたし は がくせい です
罗马音: watashi ha gakusei desu

错误与解决

Traceback (most recent call last):
  File "I:\视频\a\a.py", line 7, in <module>
    tagger = MeCab.Tagger("-Owakati")  # -Owakati 输出分词
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Program Files\Python\Lib\site-packages\MeCab.py", line 342, in __init__
    _MeCab.Tagger_swiginit(self, _MeCab.new_Tagger(*args))
                                 ^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: param.cpp(70) [ifs] no such file or directory: c:\Program Files\mecab\etc\mecabrc

解决方式:

不知道是不是这个错误信息,但因为字典没有安装,所以是错误。

您需要安装字典。

pip install unidic-lite