Sono in ritardo a questa festa, ma stavo giocando con i concetti di tc-idf (voglio enfatizzare la parola "concetto" perché non ho seguito alcun libro per i calcoli reali; quindi potrebbero essere un po 'fuori, e sicuramente più facilmente realizzato con pacchetti come {tm: Text Mining Package}, come detto), e penso che ciò che ho ottenuto possa essere correlato a questa domanda, o, in ogni caso, questo potrebbe essere un buon posto per pubblicarlo.
SET-UP: Ho un corpus di 5lunghi paragrafi tratti da carta stampata, text 1attraverso la 5quale il New York Times . Presumibilmente, è un "corpo" molto piccolo, una minuscola biblioteca, per così dire, ma le voci in questa biblioteca "digitale" non sono casuali: la prima e la quinta voce riguardano il calcio (o il "calcio" per "club sociale" (?) qui intorno), e più specificamente sulla squadra più grande di oggi. Quindi, per esempio, text 1inizia come ...
"Negli ultimi nove anni, Messi ha portato l'FC Barcelona a titoli nazionali e internazionali, battendo i record individuali in modi che sembrano ultraterreni ..."
Molto bella! D'altra parte vorresti sicuramente saltare il contenuto delle tre voci in mezzo. Ecco un esempio ( text 2):
"Nel giro di poche ore in tutto il Texas, il signor Rubio ha suggerito che il signor Trump aveva urinato nei suoi pantaloni e usato immigrati clandestini per dare voce ai suoi incessanti messaggi su Twitter ..."
Quindi cosa fare per evitare a tutti i costi di "navigare" dal text 1a text 2, continuando a rallegrarsi della letteratura sull'onnipotente Barcellona FC text 5?
TC-IDF: ho isolato le parole in ognuna textin lunghi vettori. Quindi ha contato la frequenza di ogni parola, creando cinque vettori (uno per ciascuno text) in cui textsono state contate solo le parole incontrate nel corrispondente - tutte le altre parole, appartenenti ad altre texts, sono state valutate a zero. Nel primo frammento di text 1, ad esempio, il suo vettore avrebbe un conteggio di 1 per la parola "Messi", mentre "Trump" avrebbe avuto 0. Questa era la parte tc .
Anche la parte idf è stata calcolata separatamente per ciascuna texte ha prodotto 5 "vettori" (penso di averli trattati come frame di dati), contenenti le trasformazioni logaritmiche dei conteggi dei documenti (purtroppo, da zero a cinque, data la nostra piccola libreria ) contenente una determinata parola come in:
log( No. documenti1+No. documenti contenenti una parola)text01text
tc × idftext
CONFRONTI: Ora si trattava solo di eseguire prodotti a punti tra questi "vettori di importanza verbale".
Com'era prevedibile, il prodotto punto di text 1con text 5era 13.42645, mentre text 1v. text2Era solo 2.511799.
Il grosso codice R (niente da imitare) è qui .
Ancora una volta, questa è una simulazione molto rudimentale, ma penso che sia molto grafica.