skfurigana
日本語テキストにふりがな(ルビ)を付与し、英数字をカタカナに自動変換できる Python パッケージです。形態素解析(fugashi + UniDic)でのふりがな付与に加え、LLM(既定は DeepSeek)を用いた英数字→カタカナ変換と、必要に応じたルビの自動補正にも対応します。
特徴
- ふりがなの自動付与(同期 API)
- 英数字のカタカナ化とルビの自動補正(非同期 API)
- シンプルな API 設計(
Mojiオブジェクトのリストを返却) - 出力形式は角括弧表記と
rubyタグ表記を切替可 - 単語翻訳結果をローカルキャッシュ(
cache.db)して再利用
インストール
pip install skfurigana
または、リポジトリをクローンして直接インストールも可能です。
git clone https://github.com/sugarkwork/furigana.git
cd furigana
pip install .
依存パッケージ(抜粋)
fugashi[unidic],unidic: 形態素解析と辞書skpmem: 永続メモリ(翻訳キャッシュ等)chat_assistant: LLM 呼び出しラッパーjson_repair: LLM 出力の JSON 補正
UniDic 辞書が未導入の場合、初回実行時に自動ダウンロードを試みます(python -m unidic download 相当)。ネットワーク制限がある環境では事前に辞書を導入してください。
pip install unidic fugashi[unidic]
python -m unidic download
環境変数(LLM 用)
DEEPSEEK_API_KEY: 既定のモデル(deepseek/deepseek-chat)を使う場合に必要です。.envに記述する場合は以下のように設定します。
DEEPSEEK_API_KEY=あなたのAPIキー
chat_assistant が対応する他プロバイダを用いる場合は、各プロバイダの API キーを環境変数で設定してください(例: Gemini など)。
クイックスタート
ふりがな付与のみ(同期)
from skfurigana import add_furigana
text = "お弁当を食べながら空を見上げているうちに、お弁当箱は空になった。"
result = add_furigana(text)
print(''.join(map(str, result)))
# 例: [お(お)][弁(べん)][当(とう)] を [食(た)]べながら[空(そら)]を...
ふりがな+英数字カタカナ化(非同期)
import asyncio
from skfurigana import convert_furigana
async def main():
text = "LibreChatのdatabase全体をtext形式でdumpする方法について。"
result = await convert_furigana(text)
print(''.join(map(str, result)))
asyncio.run(main())
# 例: [LibreChat(リブレチャット)]の[database(データベース)]全体を[text(テキスト)]形式で...
ruby タグでの出力(非同期)
import asyncio
from skfurigana import convert_furigana
async def main():
text = "お弁当を食べながら空を見上げる。LibreChatについて。"
result = await convert_furigana(text, tag=True, separator=False)
print(''.join(map(str, result)))
# 例: <ruby>弁当<rt>べんとう</rt></ruby> ... <ruby>LibreChat<rt>リブレチャット</rt></ruby> ...
asyncio.run(main())
英数字のみカタカナ変換(非同期)
import asyncio
from skfurigana import KatakanaTranslator
async def main():
translator = KatakanaTranslator()
words = ["LibreChat", "database", "text"]
result = await translator.translate_to_katakana(words)
print(result) # {'LibreChat': 'リブレチャット', 'database': 'データベース', ...}
asyncio.run(main())
関数とパラメータ
-
add_furigana(text: str) -> list[Moji]- 日本語テキストにふりがなを付与します(LLM 不要)。
- 返り値は
Mojiのリストです。str(moji)で角括弧表記、moji.set_mode(tag=True)でruby表記が可能です。
-
convert_furigana(text: str, tag=False, separator=True, adjust_ai=True, memory=None, model=None, temperature=None, models=None) -> list[Moji]- ふりがな付与に加え、英数字をカタカナへ翻訳し、必要なら LLM でルビを自動調整します(非同期)。
- 主な引数:
tag:Trueでrubyタグ出力、Falseで角括弧表記。separator:Trueでトークン間のスペースを出力、Falseで削除。adjust_ai:Trueで LLM による読みの自動補正を実施。コストと遅延が発生します。memory:skpmemのメモリを渡すと会話・翻訳のキャッシュを共有できます(既定はcache.db)。model: ルビ補正や翻訳に用いるモデル名(既定deepseek/deepseek-chat)。temperature: LLM の温度。省略時は 0.0。models:chat_assistant.ModelManagerを外部から渡す高度な利用向け。
-
KatakanaTranslatortranslate_to_katakana(words: list[str]) -> dict[str,str]: 単語配列を一括で英語風カタカナに変換。translate_text(text: str) -> str: テキスト内の英数字をカタカナに一括置換(内部的に辞書化)。
CLI(サンプル)
簡易スクリプト run_furigana.py を用意しています。
python run_furigana.py convert "LibreChatのdatabase全体をtext形式でdumpする方法について。"
既定で tag=True, separator=False で出力します。LLM を利用するため、API キーとネットワーク接続が必要です。
キャッシュと生成物
- 翻訳・会話キャッシュは既定でリポジトリ直下の
cache.db(SQLite)に保存されます。 - キャッシュをクリアしたい場合は
cache.dbを削除してください。 - UniDic の辞書は別途ダウンロード・管理されます(
unidic.DICDIR)。
注意点・ベストプラクティス
- ネットワーク要件:
- 初回の UniDic ダウンロードにネットワークが必要です。制限環境では事前導入してください。
- 英数字のカタカナ化やルビ補正には LLM API へのアクセスが必要です(DeepSeek など)。
- コストとレイテンシ:
adjust_ai=Trueは品質向上の代わりにトークン課金と遅延が発生します。必要に応じてFalseにしてください。
- 出力形式:
- 表示用途(HTML)では
tag=Trueでruby出力、テキスト用途では既定の角括弧表記が扱いやすいです。
- 表示用途(HTML)では
- 形態素解析の精度:
- UniDic のバージョンや品詞分解の結果に依存します。用途に応じて後処理を検討してください。
トラブルシューティング
- UniDic の自動ダウンロードに失敗する:
- 手動で
pip install unidic fugashi[unidic]、続けてpython -m unidic downloadを実行してください。
- 手動で
- LLM 呼び出しでエラーになる:
DEEPSEEK_API_KEYなど必要な環境変数が設定されているか確認し、ネットワーク接続を見直してください。- 料金・レート制限に注意してください。失敗時は
adjust_ai=Falseで回避可能です。
- ふりがなのみで十分:
add_furiganaを使用してください(LLM 不要、オフライン可)。
ライセンス
MIT License
リンク
Metadata
Release files for skfurigana 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| skfurigana-0.1.6.tar.gz | 12.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| skfurigana-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.1 kB
Release files / skfurigana-0.1.6.tar.gz
| Download URL | skfurigana-0.1.6.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
77c83be4f58a5822e33ffd3c2c56bd6aec94672ad53dfd81ac0642e8363dc8f0
|
|
BLAKE2b-256 checksum How to use checksums |
dca5816fdb3548865b1fbd43a680d9a1a3f0dfd478b17a6a51d0be1853b2b28a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.1
|
Release files / skfurigana-0.1.6-py3-none-any.whl
| Download URL | skfurigana-0.1.6-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a2f4a4288571b24eda8a2f1e7396b18d5b04eabd88a2248712512cd11408013
|
|
BLAKE2b-256 checksum How to use checksums |
2ee9f468d4fd8b75d4baa30b30ed5624a06ead27caae715782f1317e4d7c4516
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.1
|