similarity-md
⚠️ EXPERIMENTAL WARNING: This tool is experimental and may produce unexpected results. Its API and behavior may change significantly in future versions. Use with caution in production environments.
Vibrato を使った形態素解析による日本語 Markdown ドキュメントの類似性検出ツール
A Markdown content similarity detection tool with Japanese morphological analysis support using Vibrato
概要
このツールは、Markdown ドキュメント内のセクション間の類似性を検出します。特に日本語テキストに対して、Vibrato ライブラリを使用した形態素解析による高精度な類似性検出を提供します。
機能
- 文字レベル類似性: Levenshtein 距離による文字単位の比較
- 単語レベル類似性: 単語単位での Levenshtein 距離による比較
- 形態素解析類似性: Vibrato を使った日本語形態素解析による意味的類似性
- タイトル類似性: セクションタイトルの類似性
- 長さ類似性: コンテンツ長の類似性
- 階層考慮: Markdown の見出しレベルを考慮した比較
インストール
前提条件
形態素解析機能を使用するには、MeCab 辞書が必要です:
# Ubuntu/Debian
# macOS (Homebrew)
# または手動で辞書をダウンロード
ビルド
使用方法
基本的な使用方法
# デフォルト設定で現在のディレクトリを解析
# 特定のファイルを解析
# 閾値を指定
形態素解析を有効にする
# 形態素解析を有効化(デフォルト辞書を使用)
# カスタム辞書パスを指定
重み調整
# 各類似性指標の重みを調整
その他のオプション
# JSON形式で出力
# セクション内容も表示
# 最小単語数を指定
# 同一ファイル内のみ比較
# 異なるファイル間のみ比較
例
日本語テキストの類似性検出
# サンプルファイルで形態素解析をテスト
# 日本語Markdownファイルを解析
出力例
Similar sections found:
--------------------------------------------------------------------------------
1. Similarity: 87.50%
Character-level: 85.20%, Word-level: 82.30%, Morphological: 92.10%, Title: 95.00%, Length: 88.70%
examples/japanese_similarity_test.md:8 | L8-12 | 機械学習について (Level 2)
examples/japanese_similarity_test.md:14 | L14-18 | マシンラーニングの概要 (Level 2)
2. Similarity: 84.20%
Character-level: 82.10%, Word-level: 79.80%, Morphological: 89.30%, Title: 88.50%, Length: 91.20%
examples/japanese_similarity_test.md:20 | L20-22 | 深層学習の基礎 (Level 2)
examples/japanese_similarity_test.md:24 | L24-26 | ディープラーニングの原理 (Level 2)
API 使用例
use ;
設定
重みの調整指針
- char_weight: 文字レベルの類似性(タイポや表記揺れに敏感)
- word_weight: 単語レベルの類似性(語順の違いに敏感)
- morphological_weight: 形態素解析による類似性(日本語の意味的類似性に最適)
- title_weight: タイトルの類似性(セクションの主題の類似性)
- length_weight: 長さの類似性(コンテンツ量の類似性)
日本語テキストの場合、morphological_weightを高めに設定することを推奨します。
辞書の選択
- IPAdic: 一般的な用途に適した標準辞書
- UniDic: より詳細な言語学的情報が必要な場合
- NEologd: 新語や固有名詞を多く含む現代的なテキストに適用
トラブルシューティング
形態素解析器の初期化に失敗する場合
- MeCab 辞書がインストールされているか確認
- 辞書パスを明示的に指定:
--morphological-dict /path/to/dict - 辞書ファイルの権限を確認
パフォーマンスの問題
- 最小単語数を増やして小さなセクションを除外:
--min-words 20 - 最大見出しレベルを制限:
--max-level 3 - 形態素解析を無効化して従来の方法のみ使用
ライセンス
MIT License
貢献
プルリクエストやイシューの報告を歓迎します。特に以下の分野での貢献を求めています:
- 他の形態素解析器のサポート
- 多言語対応
- パフォーマンスの改善
- 新しい類似性指標の追加