Detect frequent phrases from Japanese texts
Project description
jphrase
日本語テキストから頻出フレーズを検出
Detect frequent phrases from Japanese texts
特徴
- 📝 簡単に使える: シンプルなAPIで、数行のコードで実行可能
- 🚀 高速: N-gramベースの効率的なアルゴリズム
- 🎯 柔軟: 豊富なパラメータでカスタマイズ可能
- 📊 多様な形式: CSV/TSV/TXT/Excel対応
- 🧪 テスト済み: 包括的なテストスイート
- 🔍 用途: SNSトレンド分析、ニュース話題抽出、頻出キーワード発見
インストール
pip install japhrase
または開発モードでインストール:
pip install -e .
クイックスタート
まずは試してみる(ファイル不要)
from japhrase import PhraseExtracter
# デモデータですぐに試せます
df = PhraseExtracter.demo()
print(df)
ファイルから抽出
from japhrase import PhraseExtracter
# ファイルから直接抽出
df = PhraseExtracter.from_file("input.txt")
print(df)
テキストリストから抽出
from japhrase import PhraseExtracter
sentences = [
"フォローありがとうございます",
"フォローしてください",
"プレゼントキャンペーン開催中"
]
extractor = PhraseExtracter()
df = extractor.get_dfphrase(sentences)
print(df)
パラメータをカスタマイズ
from japhrase import PhraseExtracter
# パラメータを指定
df = PhraseExtracter.from_file(
"input.txt",
min_count=10, # 10回以上出現
max_length=20, # 最大20文字
verbose=1 # 進捗表示
)
複数ファイルから抽出
from japhrase import PhraseExtracter
# 複数ファイルをまとめて処理
files = ["file1.txt", "file2.txt", "file3.txt"]
df = PhraseExtracter.from_files(files, min_count=5)
結果をエクスポート
from japhrase import PhraseExtracter
extractor = PhraseExtracter()
df = extractor.extract("input.txt")
# 各種形式で出力
extractor.export_csv(df, "output.csv") # CSV
extractor.export_json(df, "output.json") # JSON
extractor.export_excel(df, "output.xlsx") # Excel
主要な機能
便利なクラスメソッド
PhraseExtracter.from_file()- ファイルから直接抽出PhraseExtracter.from_files()- 複数ファイルから抽出
インスタンスメソッド
extract()- ファイルからフレーズ抽出get_dfphrase()- テキストリストからフレーズ抽出export_csv()- CSV形式で出力export_json()- JSON形式で出力export_excel()- Excel形式で出力
対応ファイル形式
- テキストファイル (
.txt,.text) - CSV (
.csv) - TSV (
.tsv)
パラメータ
主要なパラメータ:
| パラメータ | デフォルト | 説明 |
|---|---|---|
min_count |
6 | フレーズの最小出現回数 |
max_length |
16 | フレーズの最大文字数 |
min_length |
4 | フレーズの最小文字数 |
threshold_originality |
0.5 | 類似フレーズ除去の閾値 |
verbose |
1 | 進捗表示(0:非表示, 1:表示) |
knowns |
[] | 優先的に抽出したい既知語 |
詳細は USAGE.md を参照してください。
使用例
SNSテキスト分析
from japhrase import PhraseExtracter
extractor = PhraseExtracter(min_count=10, max_length=20)
df = extractor.extract("tweets.csv")
extractor.export_excel(df, "sns_phrases.xlsx")
複数ファイルからの専門用語抽出
from japhrase import PhraseExtracter
files = ["article1.txt", "article2.txt", "article3.txt"]
df = PhraseExtracter.from_files(
files,
min_count=5,
max_length=30,
threshold_originality=0.7
)
ワンライナー
from japhrase import PhraseExtracter
# 抽出して即座にCSV出力
extractor = PhraseExtracter()
extractor.export_csv(
PhraseExtracter.from_file("input.txt", min_count=10),
"output.csv"
)
プロジェクト構造
phrase-project/
├── jphrase/ # メインパッケージ
│ ├── __init__.py # パッケージ初期化
│ ├── constants.py # 定数定義
│ ├── patterns.py # 正規表現パターン
│ ├── extracter.py # メインクラス
│ ├── utils.py # ユーティリティ関数
│ └── example.ipynb # サンプルノートブック
├── tests/ # テストスイート
│ ├── test_constants.py
│ ├── test_patterns.py
│ ├── test_extracter.py
│ └── test_utils.py
├── requirements.txt # 依存パッケージ
├── setup.py # セットアップスクリプト
├── README.md # このファイル
├── USAGE.md # 詳細な使用ガイド
└── TESTING.md # テストガイド
開発
テストの実行
# 開発依存関係のインストール
pip install -e ".[dev]"
# テストの実行
pytest
# カバレッジレポート付き
pytest --cov=jphrase --cov-report=html
詳細は TESTING.md を参照してください。
ドキュメント
- POSITIONING.md - ⭐ このツールの位置づけと設計思想(必読)
- USAGE.md - 詳細な使用ガイド
- OPTIMIZATION.md - パラメータ最適化ガイド
- DATA_SOURCES.md - データ取得方法
- THEORY.md - 理論的考察と限界
- TESTING.md - テスト実行方法
- example.ipynb - Jupyter Notebookサンプル
ライセンス
MIT License
作者
Takeshi SHIMIZU
貢献
Issue や Pull Request は大歓迎です!
変更履歴
v0.1.0
- 初回リリース
- 位置づけの明確化: 頻出フレーズ検出ツールとして定義
- モジュール分割(constants, patterns, extracter, utils)
- 便利なユーティリティメソッド追加
from_file(),from_files()export_csv(),export_json(),export_excel()
- データソースモジュール(Wikipedia, 青空文庫対応)
- パラメータ最適化機能(教師なし/教師あり)
- 評価モジュール(内部指標ベース)
- 包括的なテストスイート
- 充実したドキュメント
- POSITIONING.md(位置づけと設計思想)
- THEORY.md(理論的考察)
- OPTIMIZATION.md(最適化ガイド)
- DATA_SOURCES.md(データ取得方法)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
japhrase-0.1.1.tar.gz
(475.8 kB
view details)
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
japhrase-0.1.1-py3-none-any.whl
(32.1 kB
view details)
File details
Details for the file japhrase-0.1.1.tar.gz.
File metadata
- Download URL: japhrase-0.1.1.tar.gz
- Upload date:
- Size: 475.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bab4539eb7cd750afa09e4bed61a7e21a8b31fc6857c117ad0d03673eb5f0d9c
|
|
| MD5 |
28d19532a6eec6eea24c61dae0d783b9
|
|
| BLAKE2b-256 |
9eeac88ba045ac0ddba2fed9155a6b330748daf22ab32ad3b861a5d0dc84ea19
|
File details
Details for the file japhrase-0.1.1-py3-none-any.whl.
File metadata
- Download URL: japhrase-0.1.1-py3-none-any.whl
- Upload date:
- Size: 32.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33322c6903e9a3360599085418f6b14588681388b7ca806678840f53169ee361
|
|
| MD5 |
b769e8246a5a8485dc9be19e22d972ea
|
|
| BLAKE2b-256 |
10dd6b6cef50390016b491b128ff8a24461720a5376843749bd9724716fc366b
|