¿Hay palabras que repites demasiado en tus textos?-3-Pasos en Word

Photo by Jon Ottosson
Después de los dos primeros artículos de esta serie (1 y 2), ya va siendo hora de que deje de contar y de que me ponga a mostrar cómo se hace aquello de identificar la densidad de las palabras de un texto. Voy a ello, por lo que, si no lo has hecho ya, para entender el alcance de este procedimiento, te recomiendo que leas antes dichos artículos.

Para empezar, tendrás que someter a tu documento a un tratamiento en Word, que consta de los siguientes pasos (ojo, que sí importa el orden en el que se dan):

1. Crea una macro en Word, que podemos llamar “Posición”. Se encargará de indicar la posición relativa de cada palabra del texto. Para ello, haz lo siguiente :
    • Abre Word.
    • En el menú «Vista», pulsa la ficha «Macros», la que está más a la derecha.
    • En la casilla «Nombre de la macro» de la ventana que se ha abierto, escribe “Posición” (sin las comillas, claro; en realidad valdría cualquier expresión, siempre que no dejes espacios entre las palabras y la utilices cada vez que hablemos de la macro “Posición”); después pulsa el botón «Crear».
    • Se abrirá una ventana con el editor de Visual Basic. En el cuerpo principal de esta ventana aparecerá algo así:

Sub Posición()
'
' Posición Macro
'
'
End Sub


    • Borra manualmente todo el texto anterior (desde el «Sub» del comienzo hasta el del final) y, mediante copiar y pegar, incluye el texto siguiente:
    Sub Posición()
    Const maxwords = 32765
    Dim SingleWord As String
    Dim Words(maxwords) As String
    Dim Freq(maxwords) As Integer
    Dim WordNum As Integer
    Dim ByFreq As Boolean
    Dim ttlwds As Long
    Dim Exclusion1 As String
    Dim Exclusion2 As String
    Dim Found As Boolean
    Dim j, k, l, Temp As Integer
    Dim ans As String
    Dim tword As String

    'Palabras a excluir
    Exclusion1 = "[a][al][antes][capítulo][como][cómo][con][contestó][continuó][de][del][dijo][el][él][ella][ellas][ellos][en][es][esa][ese][era][eran][ha][has][he][la][las][le][les][lo][los][más][me][no][o][para][por][preguntó][que][qué][se][si][su][tu][un][una][unas][unos][y][ya]"
    Exclusion2 = "[María][Luis]"

    ByFreq = True
    ans = "FREQ"
    Selection.HomeKey Unit:=wdStory
    System.Cursor = wdCursorWait
    WordNum = 1
    ttlwds = ActiveDocument.Words.Count
    For Each aword In ActiveDocument.Words
        SingleWord = Trim(LCase(aword))
        If SingleWord < "a" Or SingleWord > "z" Then
            SingleWord = ""
        End If
        'En lista de exclusión1?
        If InStr(Exclusion1, "[" & SingleWord & "]") Then
            SingleWord = ""
        End If
        'En lista de exclusión2?
        If InStr(Exclusion2, "[" & SingleWord & "]") Then
            SingleWord = ""
        End If
        Words(WordNum) = SingleWord
        Freq(WordNum) = WordNum
        If WordNum > maxwords - 1 Then Exit For
        WordNum = WordNum + 1
        StatusBar = "Llevo: " & WordNum & " ítems procesados"
    Next aword
    tmpName = ActiveDocument.AttachedTemplate.FullName
    Documents.Add Template:=tmpName, NewTemplate:=False
    Selection.ParagraphFormat.TabStops.ClearAll
    With Selection
        For j = 1 To WordNum
            .TypeText Text:=Trim(Str(Freq(j))) _
              & vbTab & Words(j) & vbCrLf
        Next j
    End With
    System.Cursor = wdCursorNormal
    j = MsgBox("HE TERMINADO")
End Sub


    • Fíjate en las líneas que he resaltado en rojo y que comienzan con la expresión “Palabras a excluir”. Tiene dos partes: una que se titula “Exclusion1” y otra “Exclusion2”. En cada una de estas dos partes hay una lista con las palabras que no entrarán en el análisis. ¿Por qué? Porque son palabras que necesariamente tienen que repetirse con mucha frecuencia para que un texto sea legible; como por ejemplo, artículos, acotaciones de diálogos, nombres de los personajes u otras palabras que te pueda parecer bien que se repitan y que no quieras que se resalten en este procedimiento. En la macro de más arriba se relacionan las palabras que a mí me han parecido adecuadas, pero puedes sustituirlas, borrarlas o añadir las que te quieras, cuidando siempre de no borrar corchetes ni comillas.
    • Pulsa el botón de guardar para no perder lo hecho y cierra el editor de Visual Basic. Con esta acción ya debes haber creado una macro llamada “Posición”. Dado que se ha creado en un documento interno de Word (llamado Normal.dot, generalmente), podrás utilizar la macro sobre cualquier texto al que quieras someter al control de repeticiones sin necesidad de volver a seguir los pasos 1 a 5; bastará con empezar desde el 6, inclusive.

2. Aplica la macro Posición sobre el texto sobre el que quieras hacer el análisis de repeticiones.

    • Abre el fichero con dicho texto.
    • En el menú «Vista», vuelve a pulsar la ficha «Macros» que está a la derecha.
    • En la ventana que se ha abierto selecciona la macro que has creado (Posición) hasta que en el apartado «Nombre de la macro» aparezca la macro que has creado y pulsa la tecla «Ejecutar».
    • La macro se habrá puesto a hacer su trabajo y, mientras lo hace, durante unos segundos/minutos, en función de la longitud del texto, el ordenador parecerá bloqueado. Es correcto. Ten paciencia y no pulses ninguna tecla.
    • Una vez aparece una ventana con el mensaje “HE TERMINADO”, pulsa el botón “Aceptar” de dicha ventana.

3. Guarda el documento creado con el nombre que desees, por ejemplo, “Análisis-1”.

4. Si tuvieras que hacer varios análisis por haber necesitado trocear el texto original, para cada “trozo repite todos los pasos desde el punto 6 hasta guardarlos cada vez con un nombre diferente (“Análisis-2”, “Análisis-3”, por ejemplo), de forma que termines cerrando, guardándolos antes, cada pareja de fichero analizado y fichero generado por la macro.

¿Has visto cómo es el documento que ha creado la macro de Word? Es un listado. En cada línea aparece un número y una palabra. El número vendría a ser la posición de la palabra que está a su derecha. Digo vendría a ser” porque es una posición relativa, ya que no tiene en cuenta las palabras que hemos excluido pero sí los espacios. Lo que importa es que nos da un orden de situación de cada palabra, orden que luego trabajaremos en otra aplicación, en Excel. Si no te lo quieres perder, te aconsejo que te suscribas al blog, dejando más abajo tu dirección de correo electrónico.

Por supuesto, estaré encantado de escuchar tus comentarios, recomendaciones o consejos.

Ah, y si te ha gustado este artículo no te cortes y recomiéndalo en las redes sociales.

4 comentarios:

  1. Buenas. He intentado hacer lo que comentas acá, pero, me aparece un "Error de sintaxis". De pronto estoy haciendo mal un paso, o tienes algún error dentro de los comando.

    ResponderEliminar
    Respuestas
    1. Muchísimas gracias, jotagame, por probar el procedimiento que he descrito. Tienes toda la razón, hay un error en una línea de comandos. Ya he modificado el código y he comprobado que funciona bien.

      Por favor, si vuelves a tener algún problema no dudes en decírmelo.

      Un saludo.

      Eliminar
    2. Bueno Javier. Lo probé y funciona. Disculpa la molestia, pero me hace una lista con muchas palabras y hay unos números en blanco. Si no es mucho para ti, en otro post o acá mismo, ¿Podrías explicar como funciona después de aplicarlo? Estoy atento.

      Eliminar
    3. Me alegro de que ya te funcione la macro, Javier.

      En los posts de las próximas semanas finalizaré con el resto de pasos a dar para trabajar esos palabras y números, y que nos descubran lo que estamos buscando. La aplicación que utilizaré será Excel.

      Gracias de nuevo por tu interés.

      Eliminar

Redes sociales