Machine Learning · Insper · E2.2

TF-IDF

Abordagem avançada

Frequência do termo × frequência inversa nos documentos: os botões do vetorizador e onde todo vetor esparso falha

O caminho desta parte

  1. Girar os botõessmooth_idf, sublinear_tf, norm
  2. O que ele não enxergasinônimos, ordem das palavras, dois sentidos
  3. Palavras que ele nunca viunenhuma coluna, um vetor nulo
Cada etapa responde a uma pergunta: o que os botões mudam? → o que um vetor esparso não enxerga? → o que acontece com palavras nunca vistas?
Etapa 1 · o que os botões mudam?

Os padrões e três botões

\[ \text{tf-idf}(t, d) = \text{tf}(t, d) \times \Big(\ln \frac{1 + n}{1 + \text{df}(t)} + 1\Big) \]

\(n\) documentos, \(\text{df}(t)\) deles contêm a palavra \(t\), \(\text{tf}(t, d)\) é a sua contagem no documento \(d\); depois cada linha é dividida pelo seu comprimento.

botãopadrãoa outra escolha
smooth_idfTrue: o "+1" dentro da fraçãoFalse: \(\ln(n/\text{df}) + 1\)
sublinear_tfFalse: o tf é a contagem brutaTrue: \(1 + \ln(\text{tf})\)
norm'l2': cada linha com comprimento 1None: os produtos brutos
Preveja. A linha d3 = "Gato dorme, gato sonha." tem gato duas vezes (idf 1) e duas palavras raras (idf 1,6931). Qual botão poderia impedir que os dois gato pesem mais que as palavras raras?

Três botões, na linha d3

opçãodormegatosonha
padrão0,54270,64110,5427
smooth_idf=False0,58640,55880,5864
sublinear_tf=True0,57740,57740,5774
norm=None1,693121,6931
  • smooth_idf=False: \(\ln(n/\text{df}) + 1\); as palavras raras recebem \(\ln 3 + 1 = 2{,}0986\) e passam à frente de "gato".
  • sublinear_tf=True: contagem → \(1 + \ln(\text{tf})\); os dois "gato" contam \(1{,}6931\), igual ao idf das raras por coincidência.
  • norm=None: produtos brutos; documentos mais longos têm vetores maiores (importa para a distância euclidiana, não para o cosseno).
Etapa 2 · o que um vetor esparso não enxerga?

Os limites das representações esparsas

Cada palavra é um eixo próprio, ortogonal a todas as outras.

Preveja. "o carro é rápido" e "o automóvel é veloz": qual é o cosseno delas?
parcossenopalavras em comum
sinônimos: o carro é rápido / o automóvel é veloz0,00nenhuma
ordem: o cachorro mordeu o homem / o homem mordeu o cachorro1,00cachorro, homem, mordeu
dois sentidos: a manga da camisa rasgou / comi uma manga madura0,14manga
mesmo sentido: a manga da camisa rasgou / o punho da blusa descosturou0,14da
Etapa 3 · o que acontece com palavras nunca vistas?

E uma quinta: palavras nunca vistas não têm coluna


'o cachorro latiu'       non-zeros: 1   {'cachorro': 1.0}
'um felino adormeceu'    non-zeros: 0   {}
  

Uma frase sobre um gato dormindo, ao lado de documentos sobre gatos dormindo, com similaridade 0 com todos eles.

Pela lei de Heaps, palavras novas nunca param de chegar. Essas falhas motivaram as representações densas (E2.3 e E2.4).

Resumo

  1. smooth_idf, sublinear_tf e norm mudam os pesos; sublinear_tf impede que uma palavra repetida tome conta da linha.
  2. Cada palavra é um eixo próprio: sinônimos dão 0, a ordem é invisível, uma grafia com dois sentidos parece igual.
  3. Uma palavra nunca vista no fit não tem coluna; um texto só de palavras novas é o vetor nulo.
Essas falhas motivaram as representações densas (E2.3 e E2.4).
Lab avançado · cerca de 15 min, em duplas

Um buscador TF-IDF em posts reais, passos 6 e 7

  • Continue no mesmo notebook e na mesma sessão dos passos 1 a 5.
  • Passo 6: seis consultas escritas à mão, avaliadas por quantos dos 5 resultados vêm do grupo certo.
  • Passo 7: "image" e "picture", "faith" e "belief": o que a busca por palavras-chave não enxerga.
  • Simulação: manter as palavras raras (passo 6).
  • O notebook do lab, a partir do passo 6.

Ritmo: passo 6 e a simulação em 10 min; passo 7 em 5 min.