はじめに
SemHashは、意味的類似性によってデータセットの重複を排除するための軽量で柔軟なツールです。Model2Vecの高速な埋め込み生成とVicinityの効率的なANN(近似最近傍)類似検索を組み合わせています。SemHashは単一データセットの重複除去(トレーニングセットのクリーニングなど)と複数データセットの重複除去(テストセットとトレーニングセットの重複がないことの確認など)の両方をサポートしています。テキストリストのような単純なデータセットだけでなく、複数列の QA データセットのような複雑なデータセットにも適している。さらに、重複排除の結果をチェックする機能もあり、データクリーニングプロセスの理解と最適化を容易にします。
機能一覧
- 高速エンベッディング生成:高速かつ正確なエンベッディングのためにModel2Vecを使用してエンベッディングを生成します。
- 効率的な類似性探索:ビシニティによる効率的なANN類似性探索。
- 単一データセットの重複排除:単一データセットをクリーンアップし、重複データを削除する。
- 複数データセットの重複排除:データ漏洩を防ぐため、複数のデータセット間で重複がないようにする。
- 複数列データセットの重複排除:QAデータセットのような複雑なデータセットの重複排除をサポート。
- 重複排除結果チェック:重複排除結果の詳細なチェック機能を提供し、データクリーニングプロセスの最適化を支援する。
ヘルプの使用
設置プロセス
- ターミナルまたはコマンドラインツールを開く。
- 次のコマンドを入力して、SemHashをインストールします:
pip install semhash
使用方法
単一データセットの重複排除
- データセットを読み込む:
from datasets import load_dataset
from semhash import SemHash
texts = load_dataset("ag_news", split="train")["text"].
- SemHashインスタンスを初期化します:
semhash = SemHash.from_records(records=texts)
- データセットの重みを取り除く:
deduplicated_texts = semhash.self_deduplicate().deduplicated
複数データセットの重複排除
- 2つのデータセットをロードする:
train_texts = load_dataset("ag_news", split="train")["text"].
test_texts = load_dataset("ag_news", split="test")["text"].
- SemHashインスタンスを初期化します:
semhash = SemHash.from_records(records=train_texts)
- テストデータセットの重み付けを解除する:
deduplicated_test_texts = semhash.deduplicate(records=test_texts, threshold=0.9).deduplicated
複数列データセットの重複排除
- 複数列のデータセットを読み込む:
dataset = load_dataset("squad_v2", split="train")
records = [dict(row) for row in dataset] (レコード)
- SemHashインスタンスを初期化します:
semhash = SemHash.from_records(records=records, columns=["question", "context"])
- データセットの重みを取り除く:
deduplicated_records = semhash.self_deduplicate().deduplicated
重み付けなしの結果チェック
- 重複を削除したテキストを表示します:
result = semhash.self_deduplicate(records=texts, threshold=0.99)
for duplicate in result.duplicates:
print("RECORD:")
print(duplicate.records)
if duplicate.exact: print("完全一致!")
print("完全一致!")
print("完全一致!")
print("重複:")
for corpus_duplicate in duplicate.duplicates: print(corpus_duplicate)
print(corpus_duplicate)
print("-" * 25)
以上の手順で、データセットのセマンティック重複排除をSemHashで素早く開始し、データクリーニングの効率を向上させることができます。