Skip to main content

nbsplitter

A tool for splitting Japanese text into graphemes (i.e. the smallest unit of written text that preserves pronunciation).

Context

Splitting Japanese graphemes as defined here isn't exactly a straightforward task. Ignoring kana (since each character neatly maps to a single pronunciation), there are quite a few nuances to consider: each individual kanji has several possible readings, certain groupings of kanji must be considered unique graphemes because their pronunciations aren't obtainable by merely combining individual kanji readings, and so on. This package elegantly handles the vast majority of these exceptions under the hood and exposes a single interface for splitting graphemes as desired.

Usage

>>> from nbsplitter import split_graphemes
>>> graphemes = split_graphemes("東大和市")
>>> print(graphemes.surface())
['東', '大和', '市']
>>> print(graphemes.reading_form())
['ヒガシ', 'ヤマト', 'シ']

Known Limitations

Inability to differentiate between rendaku and arbitrary unvoiced-to-voiced consonant changes

As noted in the documentation below, the splitter algorithm cannot definitively distinguish between examples of true rendaku and multi-kanji graphemes whose second component appears to be read as the voiced equivalent of one of its standalone readings. For example, consider the output below:

graphemes = split_graphemes("富士", split_rendaku=True)
print(graphemes.reading_form())
# Output: ['フ', 'ジ']  <-- WRONG: should be ['フジ']

This occurs because the kanji 士 can be read as シ, so the algorithm interprets the ジ found in the grapheme's actual reading as an intentional change in voicing (i.e. rendaku) when in practice the grapheme 富士 cannot be split (although this may reveal a thing or two about historical changes in pronunciation, I wouldn't say it's particularly useful for parsing modern Japanese).

If this behavior is undesirable, simply disable the option to split graphemes affected by rendaku, at the cost of compound words such as 船橋 being treated as a single grapheme. May be fixed in a future update.

API Reference

Grapheme

A single grapheme.

Represents the smallest unit of written text that maintains its intended pronunciation. Can either be a single character or a multi-character compound with a distinct pronunciation (see https://en.wikipedia.org/wiki/Kanji#Special_readings).

Grapheme.reading_form()

The reading form of this grapheme (in katakana).

Grapheme.surface()

The original Japanese form of this grapheme.

GraphemeList

A list of graphemes.

GraphemeList.reading_form()

A list containing every grapheme's reading form (in katakana).

GraphemeList.surface()

A list containing every grapheme's original Japanese form.

split_graphemes()

Splits Japanese text into graphemes.

Args:

  • japanese: The text to be split.
  • split_rendaku: NOT RECOMMENDED: Use only if intending on verifying graphemes later on. This option may interpret compounds whose latter parts happen to be the voiced equivalents of unvoiced counterparts as examples of rendaku when they should not be considered as such. If True latter parts of a multi-kanji compound affected by rendaku (see https://en.wikipedia.org/wiki/Rendaku) are treated as separate graphemes.

Returns:

  • A GraphemeList representing the split text.

Acknowledgements

This package relies on KANJIDIC dictionary files. These files are property of the Electronic Dictionary Research and Development Group (EDRDG) and are used in accordance with the Group's license.

Release files for nbsplitter 1.0.0.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nbsplitter 1.0.0.post1
File Size Uploaded
nbsplitter-1.0.0.post1.tar.gz 1.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for nbsplitter 1.0.0.post1
File Interpreter ABI Platform
nbsplitter-1.0.0.post1-py3-none-any.whl Python 3 none any Details

Total release size: 3.1 MB

Release files / nbsplitter-1.0.0.post1.tar.gz

Download URL nbsplitter-1.0.0.post1.tar.gz
Size 1.5 MB
Tags Source
SHA-256 checksum
How to use checksums
36ed86008f4385bc937646287b6d54d54f9096c6f99d5159b67245605c479a8f
BLAKE2b-256 checksum
How to use checksums
9aae6728ec71be43be746ff867ea7268e8bf179d20bb26ef96d72e3f74997d9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.

Transparency log

Release files / nbsplitter-1.0.0.post1-py3-none-any.whl

Download URL nbsplitter-1.0.0.post1-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d7f1780aca2c5d4f205e133b98fe701efe2a834c310c1a2450bad20daa1fc19a
BLAKE2b-256 checksum
How to use checksums
8cb112d179daa5ff7989a253b288360fdda65b34b5a492d2adb35ace10620d39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

This release

1.0.0.post1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page