Llegué tarde a esta fiesta, pero estaba jugando con los conceptos de tc-idf (quiero enfatizar la palabra 'concepto' porque no seguí ningún libro para los cálculos reales; por lo tanto, pueden estar algo fuera de lugar, y definitivamente se lleva a cabo más fácilmente con paquetes como {tm: Text Mining Package}
, como se mencionó), y creo que lo que obtuve puede estar relacionado con esta pregunta o, en cualquier caso, este puede ser un buen lugar para publicarlo.
SET-UP: Tengo un corpus de 5
largos párrafos tomados de los medios de comunicación impresos, text 1
a través 5
tales como The New York Times . Supuestamente, es un "cuerpo" muy pequeño, una pequeña biblioteca, por así decirlo, pero las entradas en esta biblioteca "digital" no son aleatorias: las entradas primera y quinta se refieren al fútbol (o 'fútbol' para 'club social' (?) por aquí), y más específicamente sobre el mejor equipo de hoy. Entonces, por ejemplo, text 1
comienza como ...
"En los últimos nueve años, Messi ha llevado al FC Barcelona a títulos nacionales e internacionales y ha batido récords individuales de maneras que parecen de otro mundo ..."
¡Muy agradable! Por otro lado, definitivamente querrás omitir el contenido de las tres entradas intermedias. Aquí hay un ejemplo ( text 2
):
"En el lapso de unas pocas horas en todo Texas, el Sr. Rubio sugirió que el Sr. Trump había orinado en sus pantalones y usado inmigrantes ilegales para aprovechar sus incesantes mensajes de Twitter ..."
Entonces, ¿qué hacer para evitar a toda costa "surfear" del text 1
al text 2
, sin dejar de regocijarnos en la literatura sobre el todopoderoso FC Barcelona en text 5
?
TC-IDF: aislé las palabras en todos text
en vectores largos. Luego contó la frecuencia de cada palabra, creando cinco vectores (uno para cada uno text
) en los que solo text
se contaron las palabras encontradas en las correspondientes ; todas las demás palabras, pertenecientes a otras text
s, se valoraron en cero. En el primer fragmento de text 1
, por ejemplo, su vector tendría un recuento de 1 para la palabra "Messi", mientras que "Trump" tendría 0. Esta era la parte tc .
La parte idf también se calculó por separado para cada uno text
y dio como resultado 5 "vectores" (creo que los traté como marcos de datos), que contienen las transformaciones logarítmicas de los recuentos de documentos (lamentablemente, solo de cero a cinco, dada nuestra pequeña biblioteca ) que contiene una palabra dada como en:
Iniciar sesión( No. documentos1+No. documentos que contienen una palabra)text
0 01text
tc × idftext
COMPARACIONES: Ahora era solo cuestión de realizar productos de punto entre estos "vectores de importancia de palabras".
Como era de esperar, el producto punto de text 1
with text 5
era 13.42645
, mientras que text 1
v. text2
Era solo 2.511799
.
El código R torpe (nada que imitar) está aquí .
Nuevamente, esta es una simulación muy rudimentaria, pero creo que es muy gráfica.