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 5
longos parágrafos retirados de mídia impressa, text 1
através de 5
tais 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 1
começ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 1
para 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 text
vetores 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 text
foram contadas - todas as outras palavras, pertencentes a outras text
s, 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 text
e 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 text
consideraçã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 text
s.
A multiplicação de entrada de tc × idfpara cada text
era 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 1
with text 5
era 13.42645
, enquanto o text 1
v. text2
Era 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.