jaconv (Japanese Converter)

repository·master·Indexed 43 days ago

https://github.com/ikegami-yukino/jaconv

A high-speed Python library for converting between Japanese character types. It provides utilities for converting Hiragana and Katakana, switching between half-width (Hankaku) and full-width (Zenkaku) characters via h2z() and z2h(), normalizing Japanese text, enlarging small kana, and transliterating between kana and the Latin alphabet.

Tokens
2.2K
Snippets
12
Records
12
Agent score
6%

What's inside jaconv

  1. Install jaconv via pip

    master

    Install the jaconv package using pip. Since it is implemented entirely in Python, it can be used in environments where a C compiler is unavailable.

    $ pip install jaconv
  2. Normalize Japanese text

    master

    The normalize(text, form) method expands unicodedata.normalize specifically for Japanese language processing. It handles common character variations like different types of dashes, hyphens, and quotation marks to ensure consistency.

    import jaconv
    
    jaconv.normalize('ティロ・フィナ〜レ', 'NFKC')
    # => 'ティロ・フィナーレ'
  3. Normalize text with normalize()

    master

    The normalize(text, form) method is based on Python's unicodedata.normalize but includes specialized extensions for Japanese text processing. It automatically maps various Japanese-specific symbols (like different types of dashes, hyphens, and quotation marks) to standard forms.

    Common mappings include:

    • 〜 or ~ $\rightarrow$ ー (Chōonpu)
    • Various dashes (―, ‐, ‑, etc.) $\rightarrow$ - or ー depending on context.
    • Various quotation marks $\rightarrow$ standard ASCII quotes.
    import jaconv
    
    jaconv.normalize('ティロ・フィナ〜レ', 'NFKC')
    # => 'ティロ・フィナーレ'
  4. Convert Half-width to Full-width characters with h2z()

    master

    The h2z method (alias: hankaku2zenkaku) converts half-width characters to full-width. You can control which character types are converted using boolean flags:

    • kana: Convert half-width kana to full-width kana (default behavior).
    • ascii: Convert half-width ASCII to full-width ASCII.
    • digit: Convert half-width digits to full-width digits.

    Note: To prevent certain characters from being converted, set their respective flag to False.

    import jaconv
    
    # Half-width kana to Full-width kana
    jaconv.h2z('ティロ・フィナーレ')
    # => 'ティロ・フィナーレ'
    
    # Half-width ASCII to Full-width ASCII
    jaconv.h2z('abc', kana=False, ascii=True, digit=False)
    # => 'abc'
    
    # Half-width digits to Full-width digits
    jaconv.h2z('123', kana=False, ascii=False, digit=True)
    # => '123'
    
    # Mixed conversion
    jaconv.h2z('アabc123', kana=False, digit=True, ascii=True)
    # => 'アabc123'
    
    # Alias usage
    jaconv.hankaku2zenkaku('ティロ・フィナーレabc123')
    # => 'ティロ・フィナーレabc123'
  5. Convert Full-width to Half-width characters with z2h()

    master

    The z2h method (alias: zenkaku2hankaku) converts full-width characters to half-width. You can control which character types are converted using boolean flags:

    • kana: Convert full-width kana to half-width kana (default behavior).
    • ascii: Convert full-width ASCII to half-width ASCII.
    • digit: Convert full-width digits to half-width digits.
    import jaconv
    
    # Full-width kana to Half-width kana
    jaconv.z2h('ティロ・フィナーレ')
    # => 'ティロ・フィナーレ'
    
    # Full-width ASCII to Half-width ASCII
    jaconv.z2h('abc', kana=False, ascii=True, digit=False)
    # => 'abc'
    
    # Full-width digits to Half-width digits
    jaconv.z2h('123', kana=False, ascii=False, digit=True)
    # => '123'
    
    # Mixed conversion
    jaconv.z2h('アabc123', kana=False, digit=True, ascii=True)
    # => 'アabc123'
    
    # Alias usage
    jaconv.zenkaku2hankaku('ティロ・フィナーレabc123')
    # => 'ティロ・フィナーレabc123'
  6. Convert between Kana and Alphabet

    master

    Use these methods to transliterate between Japanese kana and the Latin alphabet:

    • kana2alphabet(text): Converts Hiragana to Alphabet.
    • alphabet2kana(text): Converts Alphabet to Hiragana.
    • kata2alphabet(text): Converts Katakana to Alphabet.
    • alphabet2kata(text): Converts Alphabet to Katakana.
    import jaconv
    
    jaconv.kana2alphabet('じゃぱん')
    # => 'japan'
    
    jaconv.alphabet2kana('japan')
    # => 'じゃぱん'
    
    jaconv.kata2alphabet('ケツイ')
    # => 'ketsui'
    
    jaconv.alphabet2kata('namba')
    # => 'ナンバ'
  7. Convert between half-width and full-width characters

    master

    Convert characters between half-width (Hankaku) and full-width (Zenkaku) using these methods:

    • h2z(text, kana=True, ascii=False, digit=False): Converts half-width to full-width. This is an alias for hankaku2zenkaku.
    • z2h(text, kana=True, ascii=False, digit=False): Converts full-width to half-width. This is an alias for zenkaku2hankaku.

    Parameters:

    • kana: Whether to convert Katakana.
    • ascii: Whether to convert ASCII characters.
    • digit: Whether to convert digits.
    import jaconv
    
    # half-width character to full-width character
    # default parameters: kana=True, ascii=False, digit=False
    jaconv.h2z('ティロ・フィナーレ')
    # => 'ティロ・フィナーレ'
    
    # only ascii characters
    jaconv.h2z('abc', kana=False, ascii=True, digit=False)
    # => 'abc'
    
    # only digit characters
    jaconv.h2z('123', kana=False, ascii=False, digit=True)
    # => '123'
    
    # full-width character to half-width character
    jaconv.z2h('ティロ・フィナーレ')
    # => 'ティロ・フィナーレ'
    
    # an alias of h2z
    jaconv.hankaku2zenkaku('ティロ・フィナーレabc123')
    # => 'ティロ・フィナーレabc123'
    
    # an alias of z2h
    jaconv.zenkaku2hankaku('ティロ・フィナーレabc123')
    # => 'ティロ・フィナーレabc123'
  8. Enlarge small kana with enlarge_smallkana()

    master

    The enlarge_smallkana(text, ignore=None) method converts small kana (like ぁ, ぃ, ぅ, ぇ, ぉ, っ, ゃ, ゅ, ょ) into their standard large counterparts.

    Use the ignore parameter to specify characters that should not be enlarged.

    import jaconv
    
    # Standard enlargement
    jaconv.enlarge_smallkana('わぁい')
    # => 'わあい'
    
    # Enlargement with ignore
    jaconv.enlarge_smallkana('きょういっぱい', ignore='っ')
    # => 'きよういっぱい'
  9. Convert Hiragana and Katakana

    master

    Use the following methods to convert between Hiragana and Katakana character sets:

    • hira2kata(text): Converts Hiragana to Katakana.
    • hira2hkata(text): Converts Hiragana to Half-width Katakana.
    • kata2hira(text): Converts Katakana to Hiragana.
    import jaconv
    
    # Hiragana to Katakana
    jaconv.hira2kata('ともえまみ')
    # => 'トモエマミ'
    
    # Hiragana to Half-width Katakana
    jaconv.hira2hkata('ともえまみ')
    # => 'トモエマミ'
    
    # Katakana to Hiragana
    jaconv.kata2hira('巴マミ')
    # => '巴まみ'
  10. Enlarge small Hiragana or Katakana

    master

    Use enlarge_smallkana(text, ignore=None) to convert small Hiragana or Katakana characters (like ぁ, ぃ, ぅ, ぇ, ぉ, っ, etc.) to their normal size versions.

    Use the ignore parameter to specify characters that should remain small.

    import jaconv
    
    jaconv.enlarge_smallkana('わぁい')
    # => 'わあい'
    
    jaconv.enlarge_smallkana('きょういっぱい', ignore='っ')
    # => 'きよういっぱい'
  11. Convert Hiragana to Julius phoneme representation

    master

    The hiragana2julius(text) method converts Hiragana text into the Julius phonetic transcription format.

    import jaconv
    
    jaconv.hiragana2julius('てんきすごくいいいいいい')
    # => 't e N k i s u g o k u i:'