Apuntes / Procesamiento de Lenguaje Natural / Apunte 2 de 8
Read in EnglishPalabras, lemas y WordNet
De qué está hecha una palabra, cómo los stems y los lemas reúnen sus formas, cómo se etiquetan las palabras de una oración y cómo WordNet relaciona sus significados.
El apunte anterior terminó en una diferencia: el original usa 22 605 palabras distintas donde la traducción inglesa usa 14 921, porque un verbo castellano toma decenas de formas y un conteo toma cada una por una palabra distinta. Para un lector, dijo, dice y decir son un verbo; para un conteo, tres palabras. También pasa lo contrario: una sola grafía para varias palabras. Este apunte mira de qué están hechas las palabras y qué significan, con las herramientas que usa el NLP para ambas cosas:
-
Tres palabras para un conteo, un verbo para un lector
-
Las mismas palabras: un lugar, o parte de un nombre
-
Una grafía, dos palabras: una de res, «cosa», y otra de rex, «rey»
Las secciones 1 y 2 tratan de las formas: de qué está hecha una palabra, y dos maneras de reunir sus formas, que acercan mucho los vocabularios de los dos libros. La sección 3 etiqueta cada palabra de una oración con su categoría gramatical y encuentra los nombres que contiene. Las secciones 4 y 5 tratan de los significados: cómo los relaciona WordNet, y cómo una grafía puede llevar varios.
1De qué está hecha una palabra
La lingüística describe el lenguaje en cuatro niveles, cada uno con la unidad que estudia y la disciplina que la estudia:
| Nivel | Unidad | Disciplina |
|---|---|---|
| Morfológico | la palabra | morfología |
| Sintáctico | la oración | sintaxis |
| Léxico-semántico | el significado | lexicología y semántica |
| Textual | el texto | analítica textual |
Un sistema de NLP puede necesitar cualquiera de ellos; este apunte cubre los tres primeros, empezando por la palabra. Su pieza más pequeña con forma y significado a la vez es el monema, y los hay de dos clases. Hablando tiene uno de cada una: habl-, el lexema, lleva el significado y lo comparten palabras emparentadas como hablador; -ando, un morfema, agrega significado gramatical, aquí una acción en curso. Los morfemas marcan género, número, persona, tiempo y rasgos parecidos.
Según tomen o no esos morfemas, las palabras forman dos grupos. Las variables, como sustantivos, adjetivos, artículos, pronombres y verbos, cambian de forma; las invariables, como preposiciones, conjunciones, adverbios e interjecciones, tienen una sola. Las variables son las que agrandan un vocabulario. Elige una palabra con los botones para ver todas sus formas en el libro, cada una dividida en su lexema, en tinta, y su terminación, en carmín, con su conteo. Debajo, las formas de la misma palabra en la traducción inglesa.
Elige una palabra con los botones. Las formas de una palabra son las que le da una lista de formas con sus lemas.
El castellano lleva persona, número, tiempo y modo en las terminaciones de sus verbos, donde el inglés usa palabras aparte: diremos es we will say. Un conteo toma la forma castellana por una palabra más, y las inglesas por tres que ya tiene; la sección 2 mide cuánto de la diferencia entre los libros explica eso.
2Stems y lemas
Hay dos métodos para reunir las formas de una palabra. El stemming corta terminaciones con reglas, sin diccionario: los stemmers de Snowball, que nacieron del stemmer de Martin Porter para inglés, de 1980, y hoy cubren muchos idiomas, convierten hablando y hablaba en habl. Lo que queda, el stem, no tiene por qué ser una palabra. La lematización devuelve el lema de cada forma, la forma bajo la que la registra un diccionario: dijo y dice dan ambas decir. Un lematizador nunca inventa una palabra, pero necesita la categoría gramatical de cada forma, porque vino es forma de venir como verbo y una palabra propia como sustantivo; sin ella, el lematizador de NLTK, que es para inglés, toma toda palabra por sustantivo.
Elige una palabra para ver cuáles de las palabras del libro comparten su stem y cuáles su lema; una palabra que está en uno solo de los dos grupos va con borde carmín. Debajo, cuánto achica cada método el vocabulario de cada libro.
Elige una palabra con los botones. Los stems son los de Snowball; los lemas, los de la lista de formas.
Cada método falla a su manera, como muestran los ejemplos, pero lematizar acerca mucho los libros: las 22 605 palabras distintas del original quedan en 12 596 lemas, y las 14 921 de la traducción en 10 337. Una palabra que la lista no trae cuenta como su propio lema. Eso es correcto para la mayoría, porque la lista deja fuera las palabras que ya son lemas, como con, pero también le faltan los verbos con un pronombre pegado, como decirle, y las grafías antiguas de un libro de 1605, como agora por ahora, así que el número real de lemas del original es aún menor.
4Significados en red
Los significados también se relacionan, y dos relaciones importan más que las otras. Un caballero andante es una clase de caballero: caballero andante es hipónimo de caballero, y caballero hiperónimo de caballero andante. Un casco es una pieza de una armadura: casco es merónimo de armadura, y armadura holónimo de casco. La primera relación ordena las cosas en clases; la segunda las desarma.
WordNet registra ambas para el inglés, y está organizada por significados y no por palabras: cada synset es un conjunto de sinónimos con un significado, una definición y enlaces a otros synsets. El equipo de George Miller en Princeton empezó a construirla a mano en 1985; la versión 3.0 tiene 117 659 synsets y 147 306 palabras y expresiones distintas. NLTK la incluye, y su lematizador se apoya en ella: una forma irregular como saw se busca en una lista de excepciones, y una regular pierde su terminación solo si lo que queda está en WordNet. BabelNet va más allá: une WordNet con Wikipedia y otros recursos, de modo que cada una de sus entradas reúne las palabras de un concepto en muchos idiomas, junto con nombres de personas y lugares que a WordNet le faltan.
La figura muestra un trozo pequeño de WordNet, con las palabras en castellano que el Multilingual Central Repository da a cada synset. En Clases, la cadena de hiperónimos sobre caballero sube hasta entidad, y elegir un synset dibuja su cadena en azul; en Partes, diez de las partes de una armadura van de la cabeza a los pies. Una de ellas, la que protege el muslo, se llama quijote.
Elige un synset, o muévete entre ellos con las flechas. Las definiciones son del apunte, y también los nombres en castellano de los cinco synsets que el repositorio deja sin uno.
5Una grafía, varias palabras
La sinonimia es varias formas para un significado. Lo inverso, una forma para varios significados, se da de dos maneras. En la polisemia, los sentidos de una palabra se fueron separando desde un origen común, muchas veces por metáfora. En la homonimia, dos palabras sin relación comparten la grafía por azar. Los diccionarios marcan la diferencia: dan a cada homónimo su propia entrada, y ponen los sentidos de una palabra polisémica dentro de la suya.
El real del libro muestra ambas. Real como verdadero viene del latín realis, de res, «cosa», y real como del rey viene de otra palabra, regalis, de rex, «rey»: dos palabras que suenan y se escriben igual por un accidente de la historia, y que el diccionario de la RAE separa en dos entradas. Cada una tiene sus sentidos: del rey salió también una moneda, el real. La figura reparte los 47 usos de real en el libro por sentido, etiquetados a mano; elige uno para ver su parte y una línea del libro.
Elige un sentido, o muévete entre ellos con las flechas.
Elegir el sentido de una palabra a partir de su oración es la desambiguación de sentidos, y un lematizador no la hace: real recibe un solo lema, signifique lo que signifique. Los vectores de palabras de apuntes posteriores tienen el mismo punto ciego, un vector por palabra, hasta que los encoders construyen el vector de cada palabra a partir de su oración.
6Resumen
Las ideas del apunte en NLTK, una biblioteca de Python para trabajar con texto. Su etiquetador, su lematizador y su NER son para inglés, así que esas filas usan la traducción. tokens tiene las palabras de una oración, y wn es nltk.corpus.wordnet, con el Open Multilingual Wordnet instalado para el castellano.
SnowballStemmer("spanish")
.stem("hablando")wnl = WordNetLemmatizer()
wnl.lemmatize("saw", "v")nltk.pos_tag(tokens)nltk.ne_chunk(
nltk.pos_tag(tokens))wn.synset("knight.n.01")
.hypernyms()wn.synset(
"body_armor.n.01"
).part_meronyms()wn.synset("knight.n.01")
.lemma_names("spa")len(wn.synsets("light"))Los datos del apunte: los lemas vienen de las listas de lematización de Michal Měchura (ODbL), los stems de los stemmers de Snowball, los synsets y sus relaciones de WordNet 3.0, de la Universidad de Princeton, y sus palabras en castellano del Multilingual Central Repository 3.0 (CC BY 3.0).