Skip to main content

Python implementation of kakasi - kana kanji simple inversion library

Project description

Pykakasi

Overview

Documentation Status PyPI version Travis-CI Azure-Pipelines Coverage status

pykakasi is a Python Natural Language Processing (NLP) library to transliterate hiragana, katakana and kanji (Japanese text) into rōmaji (Latin/Roman alphabet).

It is based on the kakasi library, which is written in C.

Supported python versions

  • pykakasi 1.2 supports python 2.7, python 3.5, 3.6, 3.7

  • pykakasi 2.0 supports python 3.6, 3.7, 3.8, pypy3.6-7.1.1

Usage

Here is an usage of NewAPI for pykakasi v2.0.0 and later. Transliterate Japanese text to kana, hiragana and romaji:

import pykakasi
kks = pykakasi.kakasi()
text = "かな漢字"
result = kks.convert(text)
for item in result:
    print("{}: kana '{}', hiragana '{}', romaji: '{}'".format(item['orig'], item['kana'], item['hira'], item['hepburn']))

かな: kana 'カナ', hiragana: 'かな', romaji: 'kana'
漢字: kana 'カンジ', hiragana: 'かんじ', romaji: 'kanji'

Here is an example that output as similar with furigana mode.

import pykakasi
kks = pykakasi.kakasi()
text = "かな漢字交じり文"
result = kks.convert(text)
for item in result:
    print("{}[{}] ".format(item['orig'], item['hepburn'].capitalize()), end='')
print()

かな[Kana] 漢字[Kanji] 交じり[Majiri] 文[Bun]

Old API

There is also an old API for v1.2.

Transliterate Japanese text to rōmaji:

>>> import pykakasi
>>>
>>> text = u"かな漢字交じり文"
>>> kakasi = pykakasi.kakasi()
>>> kakasi.setMode("H","a") # Hiragana to ascii, default: no conversion
>>> kakasi.setMode("K","a") # Katakana to ascii, default: no conversion
>>> kakasi.setMode("J","a") # Japanese to ascii, default: no conversion
>>> kakasi.setMode("r","Hepburn") # default: use Hepburn Roman table
>>> kakasi.setMode("s", True) # add space, default: no separator
>>> kakasi.setMode("C", True) # capitalize, default: no capitalize
>>> conv = kakasi.getConverter()
>>> result = conv.do(text)
>>> print(result)
kana Kanji Majiri Bun

Tokenize Japanese text (split by word boundaries), equivalent to kakasi’s wakati gaki option:

>>> wakati = pykakasi.wakati()
>>> conv = wakati.getConverter()
>>> result = conv.do(text)
>>> print(result)
かな 漢字 交じり 文

Add furigana (pronounciation aid) in rōmaji to text:

>>> kakasi = pykakasi.kakasi()
>>> kakasi.setMode("J","aF") # Japanese to furigana
>>> kakasi.setMode("H","aF") # Japanese to furigana
>>> conv = kakasi.getConverter()
>>> result = conv.do(text)
>>> print(result)
かな[kana] 漢字[Kanji] 交じり[Majiri] 文[Bun]

Input mode values: “J” (Japanese: kanji, hiragana and katakana), “H” (hiragana), “K” (katakana).

Output mode values: “H” (hiragana), “K” (katakana), “a” (alphabet / rōmaji), “aF” (furigana in rōmaji).

There are other setMode switches which control output:

  • “r”: Romanisation table: Hepburn (default), Kunrei or Passport

  • “s”: Separator: False adds no spaces between words (default), True adds spaces between words

  • “C”: Capitalize: False adds no capital letters (default), True makes each word start with a capital letter

PyKakasi ChangeLog

All notable changes to this project will be documented in this file.

Unreleased

Added

Changed

Fixed

Deprecated

Removed

Security

v2.0.0a6 (30, Mar. 2020)

Added

  • Understand more kanji variations.

Fixed

  • Fix IVS handling to return correct word length to consume.

v2.0.0a5 (23, Mar. 2020)

Changed

  • Recognize UNICODE standard Ideographic Variation Selector(IVS) and transiliterate when used.(#97)

v2.0.0a4 (20, Mar. 2020)

Added

  • Add type hinting.

Changed

  • Refactoring dictionary generation classes.

  • call super() from wakati.__init__()

  • test: detection whether tox or raw pytest by TOX_ENV environment variable. When raw pytest, generate dictionaries as fixture. Previous versions uses –runenv option for pytest.

Fixed

  • NewAPI: fix return value when empty input string.

v2.0.0a3 (18, Mar. 2020)

Changed

  • Update test cases.

Fixed

  • Add guard for unknown symbol code point which lead NoneType error.

v2.0.0a2 (16, Mar. 2020)

Added

  • NewAPI: support kunrei and passport roman conversion rule.

Changed

  • CI: test by github actions

Fixed

  • Support an extended kana(#77) (U0001b150-U0001b152, U0001b164-U0001b167)

v2.0.0a1 (14, Mar. 2020)

Added

  • Structured interface of Kakasi class.(#21)

Changed

  • Github workflows for packaging and release.(#91)

Fixed

  • fix data kakasidict.utf8: “本蓮沼”

Deprecated

  • Drop python 2.7 support.

v1.2 (26, Sep, 2019)

Fixed

  • Fix out-of-index error when kana-dash is placed on first of same character group.(#85)

v1.1 (16, Sep, 2019)

v1.1b2 (14, Sep, 2019)

Fixed

  • Fix Long symble issue(#58) (thanks @northernbird and @ta9ya)

v1.1b1 (6, Sep, 2019)

Added

  • Add conversions: kya, kyu, kyo

Changed

  • Rewording README document

v1.1a1 (8, Jul, 2019)

Changed

  • pytest: now run on project root without tox, by generating dictionary as a test fixture.

  • tox: run tox test with installed dictionary instead of a generated fixture.

  • Optimize kana conversion function.

  • Move kakasidict.py to src and conftest.py to tests

Fixed

  • Version naming follows PEP386.

  • Sometimes fails to insert space after punctuation(#79).

  • Special case in kana-roman passport conversion such as ‘etchu’ etc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pykakasi-2.0.0a6.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pykakasi-2.0.0a6-py3-none-any.whl (2.4 MB view details)

Uploaded Python 3

File details

Details for the file pykakasi-2.0.0a6.tar.gz.

File metadata

  • Download URL: pykakasi-2.0.0a6.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.7.7

File hashes

Hashes for pykakasi-2.0.0a6.tar.gz
Algorithm Hash digest
SHA256 93254a7378b7fab7cf4d9d633c389338a1748288556be70cfd831f819a404052
MD5 e7ec6fe8836dcad1d66436488daa97a9
BLAKE2b-256 b64b39b9f83b5fdea25f1d3bde31a5b3720010e386f8276d7d188ef923d74cdd

See more details on using hashes here.

File details

Details for the file pykakasi-2.0.0a6-py3-none-any.whl.

File metadata

  • Download URL: pykakasi-2.0.0a6-py3-none-any.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.7.7

File hashes

Hashes for pykakasi-2.0.0a6-py3-none-any.whl
Algorithm Hash digest
SHA256 2e26a2d0daf9be3bf7503cb0835e18838521181ac1aaecd4258be2220935b101
MD5 4240b56bd005e1fe7690ea7cac0a89cc
BLAKE2b-256 0e8101de6978f30633731b85c753c4ee89219c18ba054fa1ce531be73da71c45

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page