Estou atrasado para esta festa, mas estava brincando com os conceitos de tc-idf (quero enfatizar a palavra 'conceito' porque não segui nenhum livro para os cálculos reais; portanto, eles podem estar um pouco errados e definitivamente mais facilmente executada com pacotes {tm: Text Mining Package}como o mencionado) e acho que o que obtive pode estar relacionado a essa pergunta ou, de qualquer forma, esse pode ser um bom lugar para publicá-la.
SET-UP: Eu tenho um corpus de 5longos parágrafos retirados de mídia impressa, text 1através de 5tais como The New York Times . Alegadamente, é um "corpo" muito pequeno, uma pequena biblioteca, por assim dizer, mas as entradas nessa biblioteca "digital" não são aleatórias: a primeira e a quinta entradas tratam de futebol (ou 'futebol' para 'clube social'). (?) por aqui) e, mais especificamente, sobre o melhor time de hoje. Então, por exemplo, text 1começa como ...
"Nos últimos nove anos, Messi levou o FC Barcelona a títulos nacionais e internacionais, quebrando recordes individuais de maneiras que parecem de outro mundo ..."
Muito agradável! Por outro lado, você definitivamente gostaria de pular o conteúdo nas três entradas intermediárias. Aqui está um exemplo ( text 2):
"No período de algumas horas no Texas, Rubio sugeriu que Trump urinou em suas calças e usou imigrantes ilegais para extrair suas mensagens incessantes no Twitter ..."
Então, o que fazer para evitar a todo custo "surfar" do text 1para text 2, enquanto continua a se alegrar na literatura sobre o todo-poderoso Barcelona FC text 5?
TC-IDF: Eu isolei as palavras em todos os textvetores longos. Em seguida, contou a frequência de cada palavra, criando cinco vetores (um para cada text) nos quais apenas as palavras encontradas na correspondente textforam contadas - todas as outras palavras, pertencentes a outras texts, foram avaliadas em zero. No primeiro trecho de text 1, por exemplo, seu vetor teria uma contagem de 1 para a palavra "Messi", enquanto "Trump" teria 0. Essa era a parte tc .
A parte idf também foi calculada separadamente para cada uma texte resultou em 5 "vetores" (acho que os tratei como quadros de dados), contendo as transformações logarítmicas das contagens de documentos (infelizmente, apenas de zero a cinco, dada a nossa pequena biblioteca ) contendo uma determinada palavra como em:
registro( No. documentos1+Documentos com uma palavra). O número de documentos é 5. Aí vem a parte que pode responder ao PO: para cada cálculo de IDF, a textconsideração em questão foi excluída da contagem . Mas se uma palavra aparecesse em todos os documentos, seu idf ainda estava0 0 graças ao 1no denominador - por exemplo, a palavra "the" teve importância 0, porque estava presente em todos os texts.
A multiplicação de entrada de tc × idfpara cada textera a importância de cada palavra para cada um dos itens da biblioteca - palavras prevalentes localmente e globalmente raras .
COMPARAÇÃO: Agora, era apenas uma questão de executar produtos pontuais entre esses "vetores de importância das palavras".
Previsivelmente, o produto escalar de text 1with text 5era 13.42645, enquanto o text 1v. text2Era apenas 2.511799.
O código R desajeitado (nada a imitar) está aqui .
Novamente, esta é uma simulação muito rudimentar, mas acho que é muito gráfica.