Introdução geral
O SemHash é uma ferramenta leve e flexível para eliminar a duplicação de conjuntos de dados por similaridade semântica. Ele combina a rápida geração de incorporação do Model2Vec com a eficiente pesquisa de similaridade ANN (Approximate Nearest Neighbour) do Vicinity.O SemHash é compatível com a desduplicação de um único conjunto de dados (por exemplo, limpar o conjunto de treinamento) e com a desduplicação de vários conjuntos de dados (por exemplo, garantir que não haja sobreposição entre os conjuntos de teste e de treinamento). Ele é adequado para conjuntos de dados simples, como listas de texto, bem como para conjuntos de dados mais complexos, como conjuntos de dados de controle de qualidade com várias colunas. Além disso, inclui a capacidade de verificar os resultados da desduplicação, facilitando a compreensão e a otimização do processo de limpeza de dados.
Lista de funções
- Geração rápida de incorporação: gere incorporação usando Model2Vec para incorporação rápida e precisa.
- Pesquisa eficiente de similaridade: Pesquisa eficiente de similaridade ANN com Vicinity.
- Desduplicação de um único conjunto de dados: limpe um único conjunto de dados para remover dados duplicados.
- Desduplicação de vários conjuntos de dados: garanta que não haja sobreposição entre vários conjuntos de dados para evitar o vazamento de dados.
- Desduplicação de conjuntos de dados com várias colunas: suporta a desduplicação de conjuntos de dados complexos, como o conjunto de dados de controle de qualidade.
- Verificação do resultado da desduplicação: fornece uma função de verificação detalhada do resultado da desduplicação, o que ajuda a otimizar o processo de limpeza de dados.
Usando a Ajuda
Processo de instalação
- Abra um terminal ou uma ferramenta de linha de comando.
- Digite o seguinte comando para instalar o SemHash:
pip install semhash
Uso
Desduplicação de um único conjunto de dados
- Carregar o conjunto de dados:
from datasets import load_dataset
from semhash import SemHash
texts = load_dataset("ag_news", split="train")["text"]
- Inicializa a instância do SemHash:
semhash = SemHash.from_records(records=texts)
- Reduzir a ponderação do conjunto de dados:
deduplicated_texts = semhash.self_deduplicate().deduplicated
Desduplicação de vários conjuntos de dados
- Carregue dois conjuntos de dados:
train_texts = load_dataset("ag_news", split="train")["text"]
test_texts = load_dataset("ag_news", split="test")["text"]
- Inicializa a instância do SemHash:
semhash = SemHash.from_records(records=train_texts)
- Reduzir a ponderação do conjunto de dados de teste:
deduplicated_test_texts = semhash.deduplicate(records=test_texts, threshold=0.9).deduplicated
Desduplicação de conjuntos de dados com várias colunas
- Carregar um conjunto de dados com várias colunas:
dataset = load_dataset("squad_v2", split="train")
registros = [dict(row) for row in dataset]
- Inicializa a instância do SemHash:
semhash = SemHash.from_records(records=records, columns=["question", "context"])
- Reduzir a ponderação do conjunto de dados:
deduplicated_records = semhash.self_deduplicate().deduplicated
Verificação dos resultados da redução da ponderação
- Visualizar o texto desduplicado:
result = semhash.self_deduplicate(records=texts, threshold=0.99)
for duplicate in result.duplicates:
print("RECORD:")
print(duplicate.records)
if duplicate.exact: print("Correspondência exata!")
print("Correspondência exata!")
print("Correspondência exata!")
print("DUPLICATAS:")
for corpus_duplicate in duplicate.duplicates: print(corpus_duplicate)
print(corpus_duplicate)
print("-" * 25)
Com essas etapas, você pode começar a usar rapidamente o SemHash para desduplicação semântica de conjuntos de dados e aumentar a eficiência da limpeza de dados.