重複ファインダー

他の言語: EnglishEspañolFrançaisDeutsch한국어PortuguêsРусский中文

重複検出ツールは、1つ以上のファイル内の類似したテキストを検出するためのオープンソースアプリケーションです。 完全に同一の重複や、似ているが同じではないコンテンツを見つけることができます。 このツールはプレーンテキスト、Markdown、XMLなど複数の形式に対応しています。

重複検出ツールは以下の点でお役に立てます:

重複コンテンツ例

こちらはツールが検出する内容を把握するための簡単な例です:

Chunk 1:
Open the Google Play Store on your Android device, search for "AwesomeApp", then tap "Install" to download and install the app.
Chunk 2:
Open the App Store on your iOS device, search for "AwesomeApp", then tap "Get" to download and install the app.

使い方

  1. アプリをダウンロード または、以下のソースから自分でビルドすることができます ソース. 実行するコマンド: ./gradlew fatJar (ソースディレクトリで JDK 21 を使用)。生成された JAR の場所: build/libs/duplicate-finder.jar .
  2. コンピューターに Java 21 以降がインストールされていることを確認してください
  3. ターミナルで、ダウンロードした .jar ファイルがあるフォルダーを開きます
  4. 次のコマンドを実行します: java -jar duplicate-finder.jar 以下のパラメーターを指定します:

    パラメータ 意味 例
    -r / --root 重複コンテンツを検索するフォルダーの相対パスまたは絶対パス。デフォルト:現在の作業ディレクトリ。 -r=./my-project/
    -o / --output 解析結果を保存したいフォルダへの相対パスまたは絶対パスです。デフォルト:現在の作業ディレクトリからの相対パス ./duplicate_finder_output。 -o=./my-project/duplicates/
    -f / --fileMask

    ファイル: スキャンするファイルの拡張子を、先頭のドットを付けずにカンマで区切って指定します。すべての拡張子を対象にするには * を使います。

    パーサー: 各項目には拡張子だけ、または extension:parser を指定できます。パーサーは、比較するテキストチャンクへの分割方法を決めます。省略すると拡張子から選択され、未知の拡張子には file が使われます。

    デフォルト: デフォルトの拡張子一覧は .md、.mdx、.xml、.adoc、.asciidoc、.properties です。-f を指定すると、この一覧を置き換えます。

    パーサー名(コロンの後に指定)と生成するテキストチャンク:

    • md – マークダウン要素
    • line – テキストの1行
    • xml – XML要素
    • adoc – AsciiDoc 要素
    • file – ファイル全体の内容
    • properties – プロパティの値

    -f=md,mdx
    .md と .mdx ファイルのみをスキャンし、両方に Markdown パーサーを使います。

    -f=topic:xml,txt:line
    .topic ファイルは XML 要素単位、.txt ファイルは行単位でスキャンします。

    -f="*:line"
    すべてのファイルをスキャンし、各行を独立したテキストチャンクとして扱います。

    -l / --minLength テキストが分析されるための最小長さ(文字数)。 デフォルト値: 100 (100文字未満のテキスト片は無視されます) -l=150
    -s / --minSimilarity 2つのテキストチャンクが重複と見なされるための最小類似度。 デフォルト: 0.9 (90%) -s=0.85
    -d / --minDuplicates 重複グループが報告されるための最小重複数です。デフォルト値:1(1つの重複で十分) -d=5
    -ui / --ui インタラクティブ UI を使用するかどうか。オプション:
    • none – UI なし、ファイルへの書き込みのみ
    • swing – 古い UI
    • compose – 新しい UI、デフォルト
    -ui=none
    -v / --verbose インデックス作成と解析の所要時間をコンソールに表示します。デフォルトでは無効です。スキップしたファイルのエラーは、このオプションに関係なく表示されます。 -v
    -g / --gram (上級) ngram の長さ – 速度、メモリ使用量、分析の正確性に影響します。違いはコンテンツの詳細に依存します。 -g=10
    -w / --keepWhitespace 解析された内容で連続する複数の空白を保持します。デフォルトでは、空白は正規化され、連続する複数の空白文字は1つとして扱われ、表示されます。 -w
    -i / --inline

    ネストされた要素の内容を囲む要素に含めます。例えば:

    <parent>Some content including <child>nested content</child></parent>

    このオプションを有効にすると、外側の要素は 'Some content including nested content' として解析され、デフォルトでは 'Some content including </>' として解析されます。

    -i

設定ファイル

コンテンツのルートディレクトリ(-r で指定した場所、または現在のディレクトリ)の duplicate-finder.properties に設定を保存できます。キーには -- を除いた長いオプション名を使います。例:

fileMask=topic:xml,md,mdx
minSimilarity=0.85
minLength=200
ui=none

引数なしで実行すると現在のディレクトリから設定ファイルを読み込みます。別のコンテンツルートを指定するには -r を使います。省略した設定にはデフォルト値が使われます。-o、-ui、-v で保存済みの設定を上書きできます。-s、-l、-d、-f、-g、-w、-i のいずれかを指定すると、設定ファイル全体が無視されます。

コマンド例

コマンドの例は以下のようになります:

java -jar duplicate-finder.jar -r=/Users/me.user/my-site -f=md,mdx -s=0.85 -d=5 -l=200

上記のコマンドは以下を実行します:

結果

設定やプロジェクトの規模によっては、分析が完了するまで少し待つ必要があります。 その後、結果は重複ビューアで開き、コマンドラインオプション「-o」で定義されたフォルダーに保存されます。 デフォルトでは、テキストレポートは作業ディレクトリ内の ./duplicate_finder_output に保存されます。ビューアを開かずにレポートを保存するには -ui=none を使います。

以下は、重複ビューアに出てくるステップです:

Duplicate finder UI
  1. ツールバー:フォントサイズ、並べ替え順序、および各重複グループに対して単一の参照チャンク(2)を 見るかどうかを設定します。 Fuzzy search ではテキストを入力し、類似度のしきい値を調整して似た文章を検索できます。
  2. 参照チャンクリスト:比較の参照として使用するチャンクを選択します。
  3. 重複チャンクリスト: 参照チャンク(2)を選択した後、このリストにはそれに似たチャンクが表示されます。 重複をプレビューするには、リストから選択してください。
  4. 参照チャンクプレビュー: 参照チャンク(2)を選択した後、その内容をここでプレビューできます。 共通部分は緑色で表示され、一致しない部分は赤色で表示されます。より多くの重複チャンク(3)が共通部分を持つ場合、より緑色に表示されます。
  5. 重複チャンクプレビュー: 重複チャンク(3)を選択すると、そのプレビューがここに表示されます。 選択した参照チャンク(4)とのクイック比較に使用できます。

詳細情報とお問い合わせ

このツールの開発に興味がある場合は、関連するブログ記事シリーズをご覧ください:

フィードバックがある場合は、このページの下部に記載された連絡先をご利用ください。ご意見や機能のリクエストをお聞きできると嬉しいです。

ライセンス

コードはMITライセンスの下にライセンスされています。これにより、任意の目的で自由に使用したり、フォークしたり、変更したりすることができます。

all posts ->