日本語テキストにふりがなを付与するツール
Project description
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
リンク
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skfurigana-0.1.6.tar.gz.
File metadata
- Download URL: skfurigana-0.1.6.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77c83be4f58a5822e33ffd3c2c56bd6aec94672ad53dfd81ac0642e8363dc8f0
|
|
| MD5 |
c6c273fb3017cf8d1c9da4e09aac84d9
|
|
| BLAKE2b-256 |
dca5816fdb3548865b1fbd43a680d9a1a3f0dfd478b17a6a51d0be1853b2b28a
|
File details
Details for the file skfurigana-0.1.6-py3-none-any.whl.
File metadata
- Download URL: skfurigana-0.1.6-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a2f4a4288571b24eda8a2f1e7396b18d5b04eabd88a2248712512cd11408013
|
|
| MD5 |
6fc929e81801d94b1211354f86cb7a04
|
|
| BLAKE2b-256 |
2ee9f468d4fd8b75d4baa30b30ed5624a06ead27caae715782f1317e4d7c4516
|