Análisis lingüísticos con procesadores de textos:
Concordancers y Parsers con WordPerfect.
Pedro Pablo Sánchez Villalón. Diciembre, 1995
El proceso automatizado del lenguaje para su análisis lingüístico viene realizándose por medio de lenguajes de programación como PROLOG y LISP. Estos lenguajes de programación asignan una serie de códigos al lenguaje natural objeto de estudio agrupando todo el material (textos) a analizar en corpus extensos cuyo manejo es realmente difícil si no se conoce el funcionamiento de dichos lenguajes de programación.
Además, para cada objetivo específico es necesario adaptar esos códigos y su mecanismo de análisis, lo cual requiere del lingüísta ser a la vez un experto en informática o la estrecha colaboración de uno de ellos.
Los que hemos llegado a la informática por la necesidad de utilizar el procesador de textos para editar textos lo más correctamente posible hemos podido comprobar la capacidad que realmente poseen los "procesadores de textos" de procesar textos, el lenguaje.
Los primeros y más simples Editores de Texto (como EDLIN y EDIT de MSDOS), según podemos obserbar, poseen la facultad de analizar lo escrito a nivel muy elemental pero eficaz para ciertos objetivos. Podemos "Buscar y Reemplazar" caracteres aislados y secuencias de caracteres.
En los Procesadores de Texto introducimos la información y el programa lo procesa para su presentación en pantalla o en impresión. Ahora bien, poseen diversas funciones que posibilitan un procesado más complejo:
- Podemos "Buscar y Reemplazar" caracteres como en los Editores, pero adiccionalmente de forma global en todo el texto, es decir, podemos modificar todas las ocurrencias de una forma, o secuencias de formas con varios fines, entre ellos el asignar códigos para su posterior localización y análisis.
- Podemos mantener varios documentos abiertos, lo que nos permite consultar otros documentos relacionados o mover partes de un documento a otro.
- Podemos acceder directamente (principalmente en entorno Windows) a otros programas relacionados con el lenguaje como son los diccionarios correctores, de ortografía, de sinónimos, de definición o de traducción.
Todo esto, obviamente, se puede realizar de manera automática en cuanto a la localización de la secuencia se refiere, pero con la intervención manual del usuario a la hora de repetir la misma función con respecto a la siguiente ocurrencia de la misma secuencia o forma, o de acceder a otros documentos o a otras facultades del programa, o a otros programas.
Esta limitación puede resolverse con la ayuda de la función de creación y ejecución de Macros que poseen los más avanzados procesadores de textos, como WordPerfect y Word.
Macros
Como los define la Ayuda de WordPerfect, "los lenguajes Macro son parecidos a los lenguajes de programación. Las Macros se escriben con un editor o procesador de textos y se archivan como archivos fuente. Cuando la Facilidad Macro compila un archivo fuente, sin embargo, no crea un archivo objeto separado. En vez de eso, archiva el objeto en la cabecera de archivo fuente, donde el usuario no puede verlo. Cuando el ususario edita un archivo fuente, debe compilarlo para actualizar el objeto. WordPerfect sólo puede ejecutar un archivo fuente con un objeto. Un archivo compilado fuente, o macro, contiene instrucciones que la Facilidad Macro interpreta y envía a la aplicación apropiada para su ejecución cuando así lo requiere el usuario".
Las funciones automáticas de Macro consisten en instrucciones llamadas sentencias. Las sentencias pueden ser asignaciones, condiciones, bucles, comentarios, o comandos. Por ejemplo,
1 FileNew
2 LineNumbering(State:On!)
3 DocPrevious
4 PosDocTop ()
son comandos con los que se abre un documento nuevo, se especifica la numeración de líneas, vuelve al documento anterior y se situa el cursor al comienzo de él para empezar a realizar otras funciones como la búsqueda de una palabra. Cada comando representa una instrucción o sentencia. La macro más simple consta de una sola sentencia. Las macros más complejas tienen cientos de sentencias. La sucesión de sentencias determina cómo una macro realiza su tarea.
Sentencias Esenciales en la Aplicación de Macros al Análisis de Corpus
Variables
La asignación de cualquier tipo de secuencia textual a una variable (llamada, por ejemplo, "txt") nos facilita el poder utilizar tanto una secuencia fija (terminación en "-ing") durante un proceso de contabilización o codificación, y cambiarla después (terminación en "-ed") para realizar el mismo proceso o similar (lo que realizamos con el CONCORDANCER), como también utilizar una secuencia distinta cada vez para su identificación y análisis por ejemplo (como es el caso de TAGGING).
5 txt:=""
6 GETSTRING(txt;"INTRODUZCA EL TEXTO A BUSCAR";"Texto")
Cada grupo de funciones, sobre todo si debe acceder a ellas dependiendo de ciertos resultados u otras funciones anteriores, pueden determinarse como procedimientos con un rótulo o etiqueta inicial, y se accede a ellos por ciertas funciones como GO(...) o CALL(...)
7 GO(Búsqueda@)
8 LABEL(Búsqueda@)
....
Find & Replace
La función de Buscar y Reemplazar es muy útil a la hora de buscar una secuencia de caracteres en el corpus y contabilizarlo, o codificarlo añadiéndole un símbolo que podremos utilizar a su vez para contabilizar las ocurrencias de tal código pasando del análisis de las formas como palabras o vocablos al análisis de las formas sintácticas.
9 SearchString (txt)
10 SearchNext (Extended!)
Select or Block
La selección de cada palabra o de una variable fija cada vez que ocurra nos permitirá actuar sobre ella para copiarla, analizarla, codificarla o contabilizarla.
11 SelectSentence
12 EditCopy
13 DocNext
14 HardReturn
15 EditPaste
16 SearchString (txt)
17 SearchPrevious (Extended!) PosWordPrevious()
18 SelectWord()
19 ConvertCaseUppercase()
20 DocNext
Loops o Bucles
Los Bucles es una facultad del lenguaje de programación que en conexión generalmente con las funciones condicionales IF ... ENDIF, WHILE ... ENDWHILE o ONNOTFOUND() nos permite automatizar búsquedas, selecciones, y todo tipo de acciones en general a lo largo de todo el corpus siempre que se den ciertas condiciones de ocurrencias con respecto a las variables. Así podremos, cada vez que encontremos una variable, asignarle un valor constante o progresivo (número de variable + 1) para contabilizar el número de ocurrencias de una variable (una forma o secuencia de caracteres en CONCORDANCER, o un código o categoría en TAGGING).
8 LABEL(Búsqueda@)
.....
21 NUMTXT=NUMTXT+1
22 ONNOTFOUND(end@)
23 GO(Búsqueda@)
24 LABEL(End@)
25 QUIT
Hemos introducido varios ejemplos de cómo trabajar con macros para analizar el lenguaje natural a distintos niveles. En primer lugar, nos hemos centrado en analizar las ocurrencias de ciertas formas o secuencia de caracteres, es decir, una o varias palabras completas o terminaciones. Es el programa Macro CONCORDANCER. A esas 25 líneas o comandos se le pueden añadir ligeras modificaciones para que la edición y presentación del documento del resultado del análisis sea más atractivo y de más facil referencia. Es decir, podemos añadir la posibilidad de seleccionar la longitud de contexto (no una frase completa) en la que se encuentre la ocurrencia, su separación con tabulaciones y el centrado de las líneas a partir de la ocurrencia, etc.
En el programa Macro TAGGER utilizamos además la facultad OLE de los programas en entorno Windows de acceder automáticamente a diversos programas a la vez o alternativamente, lo que nos permite analizar un documento de texto utilizando como base de referencia otro programa distinto al WordPerfect, (en este caso el Diccionario Monolíngüe The American Heritage Dictionary, en soporte informático). Así utilizando el AHD como base de datos referencial identificamos cuál es la categoría gramatical que por defecto y en primera lugar asigna el Diccionario a cada palabra que aparece en un texto y la codificamos. Con otros procedimientos recursivos y dependientes del orden de los códigos en secuencias, podemos realizar rectificaciones y disponer el análisis meramente gramatical para clasificarlo sintácticamente e incluso realizar organizaciones y relaciones semánticas, que dejaremos para otro estudio posterior. En el ejemplo de Macro siguiente nos hemos limitado a realizar el análisis gramatical de los adjetivos, su codificación y cuantificación. En la línea 33 podemos ver que no se asigna el código (AJ) a la forma "that", esto se incluye como elemento corrector ya que el Diccionario identifica "that" como Adjetivo Demostrativo en primera lugar. El Programa Macro Concordancer realiza la clasificación, codificación y recuento de las cuatro categorías léxicas (Nombres, Adjetivos, Verbos y Adverbios), con facil ampliación a las categorías funcionales y distintas subcategorías.
Ejemplo 2: TAGGER (Adjetivos)
aj:= 0
FileNew
DocNext
PosCharNext
SelectMode (State: On!)
Label(Loop@)
PosCharNext
PosCharNext
SelectWord
Theword:=?SelectedText
x:=APPLOCATE("AHD")
IF(x<>0)
APPACTIVATE(x)
ELSE
APPEXECUTE("c:\ahdw\ahd.exe")
ENDIF
SendKeys Wait("{Alt+W}{Shift+Ins}{Alt+D}";1)
SendKeys Wait("{Tab}";)
SendKeys Wait("{Control+Home}";)
SendKeys Wait("{Down}";)
SendKeys Wait("{Control+Shift+Right}";)
SENDKEYS WAIT("{Control+C};")
SENDKEYS WAIT("{Alt+F4};")
DocNext
Type (" - ")
EditPaste
PosWordPrevious
SelectWord
wor2:=?SelectedText
HardReturn
DocPrevious
IF (((wor2="Adjective: ") or (wor2="Adjective")) and (Theword<>"that "))
Go(Adj@)
ENDIF
Label(Adj@)
wor2=""
PosCharPrevious ()
PosWordPrevious()
SelectWord
BoldKey
SelectOff()
Type ("(AJ) ")
aj = (aj+1)
Go(Loop@)
Go(Qit@)
Label(Qit@)
PosDocBottom()
HardReturn()
type (" - Número de Adjetivos: "; aj)
Resultado de la Aplicación de los Macro Programas TAGGER y CONCORDANCER a un texto en inglés:
Prefacio a Jacob Abbott's "Aboriginal America": edición electrónica, Dominio Público EdiciónTEI preparada en Oxford Text Archive, 15 Abril 1993 tomada de Aboriginal America (American History, Vol. I), Jacob Abbott, New York: Sheldon & Company. Boston: Gould & Lincoln. 1860
TAGGER:
"It is the design of this work to narrate, in a clear, (AJ) simple, (AJ) and intelligible (AJ) manner, the leading (AJ) events connected with the history of our country, from the earliest (AJ) periods, down, as nearly as practicable, (AJ) to the present time. The several (AJ) volumes will be illustrated with all (AJ) necessary (AJ) maps and with numerous (AJ) engravings, and the work is intended (AJ) to comprise, in a distinct (AJ) and connected (AJ) narrative, all (AJ) that it is essential (AJ) for the general (AJ) reader to understand in respect to the subject of it, while for those who have time for more (AJ) extended (AJ) studies, it may serve as an introduction to other (AJ) and more (AJ) copious (AJ) sources of information."
- Número de Adjetivos: 21
CONCORDANCER:
CONCORDANCIAS de " to " Ocurrencias: 5
is the design of this work TO narrate, in a clear, simple, and intelligible manner,
down, as nearly as practicable, TO the present time. The several volumes will be illustrated with
and the work is intended TO comprise, in a distinct and connected narrative, all
for the general reader TO understand in respect to the subject of it, while for those
reader to understand in respect TO the subject of it, while for those who have time for
it may serve as an introduction TO other and more copious sources of information."
A partir de aquí no será dificil elaborar otros programas para el análisis lingüístico, hasta llegar a la estructuración textual de los llamados 'schemas' o 'schemata' de cada texto escrito.
Otro ejemplo donde se han aplicado todas las partes de la oración con Tagger:
DRAINAGE (N) AND (CJ) IRRIGATION(N)
One (AJ) meaning (N) of (PP) drainage (N) is (AX) the (DT) natural (AJ) ability (N) of (PP) the (DT) soil (N) to (PP) allow (V) a (DT) downward (AV) movement (N) of (PP) water.The (DT) ease (N) with (PP) which (PR) water (N) can (AX) pass (V) through (PP) a (DT) soil (N) depends (V) on (PP) the (DT) proportion (N) in (PP) it (PR) of (PP) coarse (AJ) and (CJ) fine (AJ) particle (N) such (AJ) as (CJ) sand (N) and (CJ) clay. (N) The (DT) finer (AJ) the (DT) particles (N) become, (V) the (DT) more (AJ) slowly (AJ) tha (?) water (N) percolates (V) or (CJ) passes, (V) or (CJ) passes (V) through (PP) the (DT) soil. (N) So (AV) heavy (AJ) soils (N) such (AJ) as (CJ) clay (N) are (AX) more (AJ) impermeable (AJ) than (CJ) light (NA) soils. (N)
En la siguiente muestra se ha aplicado el código de colores a la macro al realizar el análisis de las palabras de contenido léxico. Este sistema ayuda a ver lo que aporta cada categoría al leer sólo un color, dos, tres o los cuatro. Y cómo hay cierto nivel de comprensión global si no nos fijamos en absoluto en las palabras gramaticales:
Mrs Bixby and the
Colonel's (N) Coat(N).America
(N) is the land (N) of opportunities (N) for women. (N) Already they own(V) about eighty-five per cent (N) of the wealth (N) of the nation. (N) Soon they will have (V) it all. (AJ) Divorce (N) has become (V) a lucrative (AJ) process, (N) simple (AJ) to arrange (V) and easy (AJ) to forget; (V) and ambitious (AJ) females (N) can repeat (V) it as often as they please (V) and parley (V) their winnings (AJ) to astronomical figures. (N) The husband's (NA) death (N) also brings (V) satisfactions, (N) rewards (N) and some (AJ) ladies (N) prefer (V) to rely (V) upon this method. (N) They know (V) that the waiting (V) period (N) will not be unduly (AJ) protracted, (V) for overwork (N) and hypertension (N) are bound (V) to get (V) the poor (AJ) devil (N) before long, (AJ) and he will die (V) at his desk (N) with a bottle (N) of benzedrines in one (AJ) hand (N) and a packet (N) of tranquilizers (N) in the other.Vea el
MrBixby(colorcoded).doc - el relato completo de Roal Dahl