Possui corpus de mais de um milhão de documentos
Para um determinado documento, deseja encontrar documentos semelhantes usando cosseno como no modelo de espaço vetorial
Todos os tf foram normalizados usando frequência aumentada, para evitar um viés em direção a documentos mais longos, como neste tf-idf :
Pré-calculou tudo
Os valores do denominador são pré-calculados.
Portanto, para um dado d 1, é necessário pontuar mais de 1 milhão d 2
Tenha um limite de 0,6 cosseno para semelhança
Eu posso observar isso por um determinado existe uma gama bastante estreita de | | d 2 | | para cosseno ≥ 0,6
Por exemplo, em uma pesquisa semelhante para um cosseno de ≥ 0,6 e a | | d 1 | | de 7.7631 então | | d 2 | | intervalo de 7,0867 a 8,8339
Onde fora do limiar de cosseno 0,6 | | d 2 | | variam de 0,7223 a 89,3395
Isso ocorreu com a normalização padrão do documento tf.
Ele está olhando MUITO de que não têm chance de ser uma partida de cosseno 0,6
Finalmente a pergunta:
para dar e cosseno de> = 0,6 como pode determinar o intervalo de | | d 2 | | que tem uma chance?
Qual | | d 2 | | posso eliminar com segurança?
Eu também sei o número de termos em e d 2 se houver intervalo de contagem de termos.
Via experimentação
e | | d 2 | | < | | d 1 | | / .8
parece ser seguro, mas espero que haja um alcance comprovadamente seguro
Criamos alguns casos de teste com alguns termos únicos, alguns não tão únicos e outros comuns. Com certeza, você pode pegar o termo mais exclusivo e aumentar essa frequência na comparação. O numerador aumentará (produto escalar) e, portanto, || comparará || e obterá um cosseno muito próximo de 1.
Tipo de relacionado e NÃO a pergunta.
Também estou usando o tf-idf para agrupar documentos em grupos. A base de clientes em que estou vendendo está acostumada a aproximar-se de grupos dup. Lá, estou adotando uma abordagem relacionada, visto como a menor contagem de termos e a avalio em relação à contagem de termos até 3x. Portanto, uma contagem de 10 a 10 é de 10 a 30 (4-9 já teve sua chance de 10). Aqui, posso me dar ao luxo de perder um, caso ele seja capturado em outro. Estou 10% pronto e a maior proporção é de 1,8.
Por favor, identifique as falhas em esta análise
como fora apontado por AN6U5 há uma falha na análise
Não é mais um cosseno se o documento é normalizado em ponderada
E como fora apontado por Mathew também não se pode concluir d1⋅d2≤d1⋅d1
estou ainda esperando por algo para me dar uma dura ligado, mas as pessoas que parecem saber essas coisas estão me dizendo não
eu não quero mudar a pergunta então basta ignorar este
vou fazer algumas análises e talvez postar uma pergunta separada na normalização de documentos
para o objetivo desta pergunta assume que o documento está normalizado em bruto tf
Desculpe, mas não sou bom com o que a marcação é usada para fazer as equações
Então, na minha notação
|| d1 || = sqrt (soma (w1 x w1))
d1 ponto d2 = soma (w1 X w2)
Suponha que d1 seja o documento mais curto
O melhor d1 ponto d2 que pode ser alcançado é d1 ponto d1
Se d1 se casar com 100 paul 20
E d2 for se casar com 100 paul 20 pedro 1
D1
normalizado
é casado 1 paul 1/5
d2 se casa 1 paul 1/5 peter 1/100
claramente se casa e paul tem o mesmo idf nos dois documentos
O melhor ponto d1 possível d2 é d1 ponto d1
A correspondência máxima possível para d1 é d1
cos = d1 ponto d1 / || d1 || || d2 ||
quadrado ambos os lados
cos X cos = (d1 ponto d1) X (d1 ponto d1) / ((d1 ponto d1) X (d2 ponto d2)) cos X cos = (d1 ponto d1) / (d2 ponto d2)
pegue o quadrado raiz de ambos os lados
cos = || d1 || / || d2 ||
é || d2 || não limitado pelo cos?
Se eu apenas usar || d2 || > = cos || d1 || e || d2 || <= || d1 || / cos eu recebo a velocidade computacional necessária