Skip to main content

Detect frequent phrases from Japanese texts

Project description

jphrase

日本語テキストから頻出フレーズを検出

Detect frequent phrases from Japanese texts

License: MIT Python 3.7+

特徴

  • 📝 簡単に使える: シンプルなAPIで、数行のコードで実行可能
  • 🚀 高速: N-gramベースの効率的なアルゴリズム
  • 🎯 柔軟: 豊富なパラメータでカスタマイズ可能
  • 📊 多様な形式: CSV/TSV/TXT/Excel対応
  • 🧪 テスト済み: 包括的なテストスイート
  • 🔍 用途: SNSトレンド分析、ニュース話題抽出、頻出キーワード発見

インストール

pip install -r requirements.txt

または開発モードでインストール:

pip install -e .

クイックスタート

まずは試してみる(ファイル不要)

from jphrase import PhraseExtracter

# デモデータですぐに試せます
df = PhraseExtracter.demo()
print(df)

ファイルから抽出

from jphrase import PhraseExtracter

# ファイルから直接抽出
df = PhraseExtracter.from_file("input.txt")
print(df)

テキストリストから抽出

from jphrase import PhraseExtracter

sentences = [
    "フォローありがとうございます",
    "フォローしてください",
    "プレゼントキャンペーン開催中"
]

extractor = PhraseExtracter()
df = extractor.get_dfphrase(sentences)
print(df)

パラメータをカスタマイズ

from jphrase import PhraseExtracter

# パラメータを指定
df = PhraseExtracter.from_file(
    "input.txt",
    min_count=10,      # 10回以上出現
    max_length=20,     # 最大20文字
    verbose=1          # 進捗表示
)

複数ファイルから抽出

from jphrase import PhraseExtracter

# 複数ファイルをまとめて処理
files = ["file1.txt", "file2.txt", "file3.txt"]
df = PhraseExtracter.from_files(files, min_count=5)

結果をエクスポート

from jphrase 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 jphrase import PhraseExtracter

extractor = PhraseExtracter(min_count=10, max_length=20)
df = extractor.extract("tweets.csv")
extractor.export_excel(df, "sns_phrases.xlsx")

複数ファイルからの専門用語抽出

from jphrase 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 jphrase 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 を参照してください。

ドキュメント

ライセンス

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


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.0.tar.gz (476.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

japhrase-0.1.0-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file japhrase-0.1.0.tar.gz.

File metadata

  • Download URL: japhrase-0.1.0.tar.gz
  • Upload date:
  • Size: 476.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for japhrase-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a04a17099d6e8c1742aa9f869755cf94ae6d810ba927424f618556de51a8dcb7
MD5 ad3206b6df4217647ea67f0f08a2e604
BLAKE2b-256 e73ef8f39e8db4f53ee3658e70c4551770fa25fd267927568eb9ad011ddb30b4

See more details on using hashes here.

File details

Details for the file japhrase-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: japhrase-0.1.0-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

Hashes for japhrase-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3588d2a4efd1194c1fc4646d0453afb6969c87c2583a272615d5c7016274cee3
MD5 d18d5afe90acca1f8795432d1a82ae39
BLAKE2b-256 d5847d4a6cce7dc20f6640beab2a3a1b7f9f834d88725fde395aecacb64c8c77

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page