日本語

テキストおよび日常ツール · テキスト ツールキット

行ベースのテキストの差分について説明: 1 つの単語の変更が行全体にフラグを立てる理由

· 仕組み

テキストの差分 ドキュメントの比較 編集

2 つの句リストが行ごとに整列され、1 行が削除され、1 行が追加され、強調表示されます。
オリジナル ToolAcre ベクトル イラスト

行ベースの差分が何を比較するのか、1 単語の編集が置換された行として報告される理由、および比較で実際の変更内容が強調表示されるように 2 つのテキストを準備する方法について説明します。

すべてが変更されたことを示す差分 — リフローされた段落が 1 つの編集を数十のフラグ付き行にどのように変えるか

契約管理者は、条項内の 1 つの義務を変更し、2 つの文書バージョンを比較に貼り付けて、その編集の周囲に報告された大きなブロックを確認できます。通常の原因は、すべての文が変更されたことではありません。それは、ワードプロセッサからのコピーによって段落がリフローされ、後の単語が別の物理行に移動されたということです。

行比較では、受け取った単位のみを調整できます。バージョン A が「サプライヤー」の後に段落をラップし、バージョン B が「サプライヤーは必須」の後に段落をラップする場合、ほとんどの文言が同じであっても、残りの行は完全に一致しなくなります。文書に数十の実質的な改訂が含まれていると判断する前に、意図的に行の境界を復元してください。

行の差分が比較するもの — 行全体を単位として、等価性によって照合され、その間に挿入と削除が含まれます。

ToolAcre は各入力を行に分割し、それらの完全な文字列が等しいかどうかを比較します。これは、両側で共有される同一の行の最大の順序セットを識別する最長共通部分シーケンス テーブルを構築します。これらのアンカー間のマテリアルは、左側から削除されるか右側に追加される行として出力されます。

順序はテキストと同じくらい重要です。変更されていない句は、シーケンス内で出現する箇所にのみアライメントを固定できます。他の場所に移動することは、特別な移動操作では表されません。その結果、法的意味の解釈やトピックごとに類似した文を組み合わせようとするものではなく、最小限の行指向の編集スクリプトが作成されます。

1 つの単語が行全体にフラグを立てる理由 — 比較の単位は行なので、相違点があると置き換えられます

「may」を「must」に変更すると、完全な行が等しくなくなります。この実装では、その行は古い側から削除され、新しい側に追加されたものとして出力されます。コア関数は、1 ワード置換に対して変更された行を出力しません。 2 つの行は、アイデア全体の削除ではなく、行単位での置換を説明しています。

それらの隣接する行を一緒に読み取ります。共通の文言は、編集された用語を見つけるのに役立ちますが、ソースに示されているアルゴリズムは、その中の文字を強調表示しません。この違いは、結果が広範囲に見えながらも正確である理由を説明しています。編集がどれほど小さいかに関係なく、レポート可能な比較の最小単位は 1 行です。

この実装では、1 つの単語で削除された行と追加された行が生成される理由

単語レベルの差分は散文をより細かくトークン化し、「してもよい」と「しなければならない」を分離できます。文字レベルの差分により表示をさらに絞り込むことができ、句読点やスペルの確認に役立ちます。これらのアプローチでは、より多くのフラグメントが作成され、トークン境界に関するルールが必要になるため、見かけの精度が高くなり、レビューが多忙になる可能性があります。

行比較は、すべての行がすでに意味のある項目を表している場合、リスト、構成ブロック、ログ、および句に適しています。査読者に安定したコンテキストを提供し、文章を理解したふりをすることなく秩序を保ちます。レビューで長い段落内の編集を特定する必要がある場合は、より細かいツールを選択してください。このルートでその詳細が製造されるとは期待しないでください。

差分を考慮したテキストの準備 — 1 行に 1 つの文または項目、トリミングされた空白、一貫した行末

1 つの文、番号付き句、またはリスト項目が各行を占めるように、両方のバージョンを準備します。違いに意味がない場合は、偶発的な空白行を削除し、先頭または末尾のスペースをトリミングします。比較関数自体は正確な行文字列をテストし、等価性チェックの前に空白を正規化しないため、重要な場合は意図的なインデントを維持してください。

アウトラインでは一貫した行末が必要ですが、`toLines` はすでに CRLF、LF、および単独の CR を区切り文字として受け入れています。より重要な一貫性はセマンティックです。つまり、同等の項目は同等の場所で開始および終了する必要があります。変更されたマージンが変更されたコンテンツとして偽装される可能性があるため、ページ幅での手動折り返しは避けてください。

安定したラインユニットを準備します。混合 CRLF、LF、および単独 CR はすでに受け入れられています

古いリストに、「1。金曜日までに配達します。」、「2。購入者は記録を検査することができます。」、および「3。支払い期限は 30 日です。」という 3 つの別々の行があるとします。この改訂では、中央の行のみが「2. 購入者はレコードを検査する必要があります。」に変更されます。比較を実行する前に、3 つの句すべてをそれぞれの行に配置してください。

1 行目と 3 行目は等しいアンカーのままです。古い中間条項は削除されたものとして表示され、改訂された中間条項は追加されたものとして表示され、管理者には確認する必要がある 1 つの注目ペアが残されます。同じ節がリフロー散文として貼り付けられた場合、ラッピングの違いによってアンカーが壊れ、見かけの変更セットが拡大する可能性があります。

これでカバーされないもの — 3 方向のマージ、移動ブロックの検出、およびフォーマットされたドキュメントの差分

この比較では 3 方向のマージは実行されないため、共有された基本バージョンに対して 2 つの編集された子孫を調整することはできません。また、移動ブロックの分類もありません。文節の再配置は、テキストが変更されていない場合でも、古い位置では削除として、新しい位置では追加として表示されます。

書式設定されたドキュメントには別の境界が導入されます。フォント、変更履歴、テーブル、コメント、レイアウトは、`diffLines` に渡されるプレーン文字列では表現されません。正式なレビューのためにオリジナルを保持しながら、最初に関連するテキストを抽出して構造化します。便利なテキスト diff はドキュメント コントロールを補足します。それらに代わるものではありません。

要点 — Text Toolkit の差分は設計上行ベースです。入力を準備すると、変更された項目が正確に表示されます

行の差分は、各行にレビュー可能な決定が 1 つ含まれている場合に最も有益です。 ToolAcre は正確な行を配置し、その順序を保持し、一致しない内容を追加または削除として報告します。この設計は予測可能です。1 つの単語の編集はその行全体に影響しますが、その周囲の同一の行は結果をコンパクトに保つ​​アンカーを提供します。

句リストを比較する前に、境界を意図的に作成し、無関係なエッジ スペースをトリミングし、構造を追加しない空の行を削除します。次に、Text diff を開き、隣接する削除行と追加行を 1 つの置換として検査します。十分な準備を行ったからといって契約が変わるわけではありません。これにより、アルゴリズムの行ベースのレポートが、レビュー担当者が実際に関心のある単位と一致します。