ToolActToolAct

テキスト重複除去ツール

テキスト内の重複コンテンツを素早く削除、行、単語、文単位の重複除去をサポート

入力テキスト
重複除去結果

重複除去モード

オプション

統計

元の項目数0
一意の項目数0
重複項目数0

テキスト重複除去とは?

テキスト重複除去ツールは、テキスト内の重複コンテンツを素早く識別・削除するために使用します。重複する行、単語、文、段落のいずれを扱っていても、このツールで効率的にデータをクリーンアップできます。このツールは複数の重複除去モードをサポートしています:リストデータには行単位、語彙分析には単語単位、記事編集には文単位、長いテキスト処理には段落単位が適しています。

使い方

基本的な使い方

  1. 重複除去するテキストを左側のテキストボックスに入力または貼り付けます
  2. 適切な重複除去モード(行、単語、文、段落など)を選択します
  3. 必要に応じてオプションを調整します(大文字小文字の区別、順序保持など)
  4. 右側にリアルタイムの重複除去結果と統計が表示されます
  5. コピーボタンをクリックして結果をクリップボードに保存します

モードの説明

  • 行単位:各行を独立した単位として扱い、同一の行を削除します
  • 単語単位:スペースでテキストを分割し、重複する単語を削除します
  • 文単位:ピリオド、疑問符、感嘆符で分割し、重複する文を削除します
  • 段落単位:空行で分割し、重複する段落を削除します
  • 文字単位:テキスト内で複数回出現する文字を削除します

利用シーン

重複する行、単語、文、段落、文字を除去重複除去の単位を選択すると、ツールは最初の出現を保持し一意の項目の順序を維持します。各モードは適切な分割と結合戦略を使用するため、行、段落、単語、文字のワークフローはそれぞれ異なります。ハッシュセットルックアップは1パスあたり O(n) で動作するため、長いリストでもブラウザ内で1ラウンドで重複除去が完了します。
クリーンなテキストをコピー前に重複を監査統計には元の項目数、一意の項目数、除去された重複数が表示されます。オプションの重複表示では、検出された重複項目が一覧されます。メーリングリスト、キーワードリスト、ログ、アンケート結果のクリーンアップ前に有用で、重複リストを先に確認すると正しい項目が統合されたかを確認できます。
大文字小文字の区別を制御Apple と apple を別々に保持したい場合は大文字小文字の区別をオンにし、大文字小文字に関係なく重複を検出したい場合はオフにします。これにより、文章のクリーンアップと厳密な技術リストの両方で同じツールが使えます。大文字小文字を区別しないモードは入力を小文字に正規化してからハッシュするため、長いログでも「ERROR」と「error」が別項目として残りません。
順序を保持しながらメールやタグリストをクリーンアップメールのエクスポートを貼り付けて行モードに切り替え、大文字小文字を区別しないマッチングで user@example.com と User@EXAMPLE.COM を統合します。最初の出現順序が保持されるため、クリーンなリストは CSV インポート時の元のグルーピングを尊重します。安定した並び順が重要で、出力はアルファベット順に並べ替えるのではなく入力順序を維持すべきです。
キーワードセットの重複除去前に空白を正規化先頭と末尾のスペースをトリムし、空行をスキップすると、コピペ由来の不意のタブが見かけ上の重複を生み出すのを防ぎます。空行やインデントされたエントリで重複数が膨らむスプレッドシートのエクスポートからソースリストを読み込む場合に不可欠です。クリーンなリストに厳格なルールで2回目のパスをかけると追加の衝突が見つからないことが多く、正規化が機能した良いシグナルになります。

仕組み

重複除去は JavaScript Set による1パススキャンです。ECMAScript の Set は SameValueZero アルゴリズム(Array.prototype.includes と同じ比較。NaN は NaN と等しく、+0 は -0 と等しい)を使用し、仕様によりサブリニアの平均ルックアップが要求されます。V8 では O(1) の償却挿入を持つオープンアドレスハッシュテーブルとして実装されているため、全体の処理は項目数に対して O(n) です。素朴な方法——結果配列に push し、各要素で indexOf を呼び出す——は O(n²) となり、1万件付近から処理が遅くなります。分割はモードに依存します。行モードは /\r?\n/ で分割し CRLF(Windows)と LF(Unix)の両方の行末に対応、単語モードは /\s+/、文モードは /(?<=[.!?])\s+/、段落モードは /\n{2,}/ で分割します。各単位は Set のキーになる前にオプションの正規化処理を経ます。trim() で前後の空白を除去、toLowerCase() で大文字小文字を区別しないマッチング、String.prototype.normalize('NFC') で合成文字(é、U+00E9)と分解文字(e + U+0301)のように視覚的に同一の文字列を単一のエントリにまとめます。順序は保持されます。結果配列はイテレーション順に構築され、Set は「既に見たか?」フィルターとしてのみ参照されるためです。同じデータ構造の選択は SQL DISTINCT や Python set() の基礎にもなっています。数千万件のデータでは、定数メモリで小さな偽陽性率(10 ビット/要素で約 1%)を犠牲にする確率的ブルームフィルターが唯一の実用的な代替手段ですが、ブラウザ側のテキストツールではオーバーキルです。

  • Set ルックアップは SameValueZero アルゴリズム(ECMA-262 §7.2.10)を使用。NaN は NaN と一致、+0 は -0 と一致、それ以外は厳密等価
  • V8 は Set をハッシュテーブルとして実装。insert と has は O(1) の償却であり、重複除去全体が indexOf ベースの O(n²) に対して O(n)
  • 行モードの正規表現 /\r?\n/ は CRLF、LF、末尾 CR を1回の分割で処理。これを怠ると不可視の「\r」接尾辞が残り、完全一致を妨げる
  • String.prototype.normalize('NFC') による Unicode 正規化で、合成/分解形(例:「é」U+00E9 vs「e」+U+0301)を1つのキーにまとめる
  • 大文字小文字を区別しないモードではキーのみを小文字化。元の大文字小文字の値は出力に保持されるため、最初の「ERROR」はそのまま残り、以降の「error」行は破棄される
  • 順序保持はコストなし。結果配列は入力順に構築され、Set はフィルターとしてのみ参照されるため、SQL DISTINCT の安定ソートと同じ動作
  • 1000万件以上でメモリがボトルネックになる場合、ブルームフィルター(10 ビット/要素で偽陽性率約 1%)で Set を置き換え可能。ブラウザ内では100万件の文字列 Set でも 100 MB 未満に収まるため不要

使用例

行の重複削除(最初の出現を保持)

入力:
apple
banana
apple
orange
banana

出力:
apple
banana
orange

前後の空白をトリムして行を重複削除

入力:
hello
  hello
hello 
world

出力(トリム後):
hello
world

大文字小文字を区別しない重複削除

入力:
ERROR
error
Warning
WARNING
warning

出力(大文字小文字を区別しない):
ERROR
Warning

メールアドレスの一意化

入力:
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com

出力(大文字小文字を区別しない、行モード):
alice@example.com
bob@example.com
carol@example.com

単語の重複削除

入力: hello world hello again world

出力: hello world again

文の重複削除

入力: This is a test. This is a test. Another sentence.

出力: This is a test. Another sentence.

よくある質問

何が重複と見なされますか?

各単位(行、単語、文、段落、文字)が他と比較されます。完全に同一の単位が重複と判定されます。大文字小文字の区別はオン/オフで切り替え可能です。本ページは重複を除いたリストを出力し、削除された重複の数を表示します。

順序は保持されますか?

はい。各ユニークなアイテムの最初の出現が元の位置に残り、それ以降の重複が削除されます。出力では元の順序が保持されます。

空行は重複として扱われますか?

空行も他の行と同様に比較されます。最初の空行は残り、その後の同一の空行は他の重複と同様に削除されます。

部分文字列や列で重複排除できますか?

いいえ。重複排除は各単位(行、単語、文、段落、文字)の内容全体に対して機能します。列ベースや部分文字列ベースの重複排除モードはありません。

出力はソートされますか?

いいえ。出力は常に元の順序を保持します。ソートオプションはありません。

どれくらい大きなファイルを扱えますか?

ブラウザのメモリが上限となります。デスクトップブラウザでは数十万行までは動作します。数百万行のファイルではメモリ不足になるため、その場合は `sort -u` や `awk '!seen[$0]++'` などの CLI ツールを使ってください。

テキストはアップロードされますか?

いいえ。重複排除はブラウザ内のメモリ上の Set を使用します。貼り付けた行が送信されることはありません。