Detect frequent phrases from Japanese texts
Project description
jphrase
日本語テキストから頻出フレーズを検出
Detect frequent phrases from Japanese texts
特徴
- 📝 簡単に使える: シンプルなAPIで、数行のコードで実行可能
- 🚀 高速: N-gramベースの効率的なアルゴリズム
- 🎯 柔軟: 豊富なパラメータでカスタマイズ可能
- 📊 多様な形式: CSV/TSV/TXT/Excel対応
- 🔤 エンコーディング自動検出: UTF-8、Shift-JIS、EUC-JPなど自動判別
- 💬 文字列リスト対応: ファイルだけでなく、テキストデータを直接処理可能
- 🧪 テスト済み: 包括的なテストスイート
- 🔍 用途: 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
# encoding='auto'で自動検出(デフォルト)
df = PhraseExtracter.from_file("shift_jis_file.txt") # 自動でShift-JISを検出
# エンコーディングを明示指定も可能
df = PhraseExtracter.from_file("input.txt", encoding="utf-8")
文字列リストから直接抽出
from japhrase import PhraseExtracter
extractor = PhraseExtracter(min_count=2)
# ファイルパスではなく、文字列リストを直接渡せる
texts = [
"フォローありがとうございます",
"フォローしてください",
"プレゼントキャンペーン開催中"
]
df = extractor.extract(texts) # ファイル不要!
複数ファイルから抽出
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.2
- エンコーディング自動検出: chardetライブラリを使用した自動検出機能
- UTF-8、Shift-JIS、EUC-JP、CP932などを自動判別
encoding='auto'がデフォルト(明示指定も可能)
- 文字列リスト入力対応:
extract()メソッドが文字列リストを直接受け取れるように- ファイルパスまたはリスト/タプルを自動判別
- ファイルを作成せずに直接テキストデータを処理可能
- 依存関係に
chardet>=4.0.0を追加 - 包括的なテスト追加(エンコーディング検出、文字列入力対応)
v0.1.1
- パッケージ名とモジュール名の不一致を修正
- モジュール名を
jphraseからjaphraseに変更 pip install japhrase→from japhrase importで統一
- モジュール名を
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.2.tar.gz
(478.7 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.2-py3-none-any.whl
(33.4 kB
view details)
File details
Details for the file japhrase-0.1.2.tar.gz.
File metadata
- Download URL: japhrase-0.1.2.tar.gz
- Upload date:
- Size: 478.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f66cb0b91643dd9fe6e49c651f6276b0605d0ccb000a1a6503c6892c30dc082
|
|
| MD5 |
33b13ef17dad9b773a25ffd820250668
|
|
| BLAKE2b-256 |
6af1b0094a11e497a51dc60e5bead055c2835932f9c5c46c0dbb893c02300d90
|
File details
Details for the file japhrase-0.1.2-py3-none-any.whl.
File metadata
- Download URL: japhrase-0.1.2-py3-none-any.whl
- Upload date:
- Size: 33.4 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 |
ad7e5433b23f10db212c4fb73b3f5bcf8a9dc2a330c4285ac043aff34e9cb863
|
|
| MD5 |
6da3e5fc2c80fb498c8d2f44280f1d64
|
|
| BLAKE2b-256 |
9f1f0cef874fea1363a076d47419c4f9bbaf871cfd5e5e5b7a73e42a2cc0bbfb
|