Como você aplica o SMOTE na classificação de texto?

13

Técnica de superamostragem de minoria sintética (SMOTE) é uma técnica de superamostragem usada em um problema de conjunto de dados desequilibrado. Até agora, tenho uma ideia de como aplicá-lo em dados estruturados genéricos. Mas é possível aplicá-lo no problema de classificação de texto? Qual parte dos dados você precisa exagerar? Já existe outra pergunta sobre isso, mas ela não tem resposta. Onde posso aprender a começar com isso?

catris25
fonte

Respostas:

11

Na verdade, a PNL é uma das áreas mais comuns em que a reamostragem de dados é necessária, pois existem muitas tarefas de classificação de texto que lidam com problemas desequilibrados (pense em filtragem de spam, detecção de comentários ofensivos, classificação de artigos etc.). Mas o SMOTE parece ser problemático aqui por alguns motivos:

  • O SMOTE trabalha no espaço de recursos. Isso significa que a saída do SMOTE não é um dado sintético que é um representante real de um texto dentro de seu espaço de recurso.
  • Por um lado, o SMOTE trabalha com o KNN e, por outro lado, os espaços de recursos para o problema da PNL são muito grandes. O KNN falhará facilmente nessas enormes dimensões.

Para que eu possa propor duas abordagens:

  1. Não me importo com a representação de texto real de novas amostras sintéticas que, suponho, devem estar bem. Você precisa equilibrar a distribuição do seu classificador e não do leitor de dados de texto. Portanto, aplique o SMOTE como tradicional (no entanto, geralmente uso a solução 2 abaixo para não garantir o resultado!) Com algumas etapas de redução de dimensionalidade.

1) Vamos supor que você queira fazer duplicar suas amostras de dados da classe menor usando 3-NN. Ignore as classes principais e mantenha apenas amostras secundárias.

2) Para cada ponto de amostra no espaço de recurso, escolha 5 vizinhos mais próximos. Em seguida, escolha três deles aleatoriamente (não é desnecessário complicado? Se eu não quisesse explicar o algoritmo original, diria que basta escolher três vizinhos!)

3) Para cada dimensão, calcule a distância entre a amostra e os vizinhos e multiplique-a em um número aleatório entre 0-1 e adicione-o ao valor original da amostra nessa dimensão. (este parágrafo complicado significa simplesmente para cada dimensão escolher um valor aleatório entre a amostra original e o vizinho!)

  1. Mas eu costumo fazer outra amostragem excessiva que está no texto (mais intuitiva) e é meio que SMOTE.

k=2

n números aleatórios de acordo com essa distribuição. É usado para determinar o tamanho do novo documento sintético.

mmnkk

Kasra Manshaei
fonte
Obrigado pela resposta, mas o SMOTE pode ser aplicado para amostras se elas forem representadas usando a codificação one-hot? ou eles devem ser representados de outra maneira?
precisa saber é o seguinte
Olá Kasra, você pode compartilhar alguma implementação relacionada às etapas mencionadas
Payal Bhatia 20/01
2

Se você deseja adicionar mais texto / frases a dados de transição, pode usar combinações de palavras pré-treinadas. Modelos pré-treinados como fornecem representação vetorial de palavras de todas as palavras do dicionário. Ele também fornece palavras 'most_smiliar'.

Você pode simplesmente usar uma sentença de amostra e gerar novas amostras, fazendo permutações de cada palavra com suas palavras mais TOP_N semelhantes.

por exemplo, se sua sentença tiver 3 palavras e se você escolher as 3 mais semelhantes para cada palavra, poderá aumentar a amostra em 27 vezes.

Yashodhan Pawar
fonte
Oi Yashodhan, como podemos usar esse processo se for específico do domínio? Obrigado
Payal Bhatia 20/01