Log in Register FAQ Search EL COLISEO Forum Index
Un foro para el combate de ideas


EL COLISEO Forum Index » Foro de la Ciencia » Procesamiento de Lenguaje Natural...
Post new topic  Reply to topic View previous topic :: View next topic 
Procesamiento de Lenguaje Natural...
PostPosted: Tue 5th Feb 4:02 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




Durante los ùltimos meses he estado estudiando un libro de Teoria de Sintaxis, y actualmente estoy cada vez màs interesando en la creaciòn de Parsers para lenguajes naturales, en un lenguaje de inteligencia artificial como el PROLOG.

Creo que un Parser eficaz, es una herramienta inapreciable para una traducciòn automàtica (en cualquier direcciòn), o como una interfase que se puede usar para usar el lenguaje natural en aplicaciones, ya sea en robòtica, interfases de voz, o cosas parecidas.

Pongo este tema aquì, y no en "Informàtica", porque la ciencia a la que pertenece este problema, es la lingüstica, màs que la informàtica pura.

Si algun lector està interesado en la lingüistica, lenguaje natural, pues tambièn le interesarà este tema.
View user's profile Send private message Send e-mail
PostPosted: Tue 5th Feb 4:08 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




El primer sitio de interès, es este de la Universidad de Georgia, donde al parecer los alumnos han creado una serie de programas para el manejo del lenguaje, dando un PDF en donde se expone la teoria, y una serie de fuentes asociados, ya sea en Prolog, C++, u otros lenguajes.

http://www.ai.uga.edu/mc/ProNTo/
View user's profile Send private message Send e-mail
PostPosted: Tue 5th Feb 4:15 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




Otro sitio interesante, es este sitio sobre Visual Prolog...

http://discuss.visual-prolog.com/

El visual Prolog que yo tengo (en algùn lugar Sad ) es una versiòn en inglès, pero de unos programadores rusos.

Seria cuestiòn de ver si los tips que aquì se muestran son aplicables a mi software.

En cualquier caso, este es un sitio en donde se puede encontrar gente con interes en la Inteligencia Artificial.

*
View user's profile Send private message Send e-mail
PostPosted: Wed 6th Feb 10:16 pm Reply with quote
Antibush
Joined: 19 Jan 2008
Posts: 327
Location: Chile




A mi me interesa el lenguaje, pero la verdad, no te entendí nada...chino!!

Podrías aterrizar la idea un poco para los que no entendemos de esto.

Saludos.-

_________________

"Lo justo a veces, por el modo de defenderlo, parece injusto" (José Martí)
View user's profile Send private message Send e-mail
PostPosted: Wed 20th Feb 4:25 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




Antibush wrote:
A mi me interesa el lenguaje, pero la verdad, no te entendí nada...chino!!

Podrías aterrizar la idea un poco para los que no entendemos de esto.

Saludos.-


Basicamente, se refiere a utilizar las computadoras, como auxiliares para hacer cosas como aprender, analizar o traducir idioma escrito (o hablado).

Es así de simple. Cuando utilizas un traductor en linea, por ejemplo entre inglés y español, el programa usa (por lo general) tecnología que viene dada por la Lingüistica y la Inteligencia Artificial (es decir, si está bien hecho).

Actualmente estoy tratando de implementar un analizador sentencial (parser) del Ruso, a medida que voy aprendiendo el idioma, que por cierto, es algo que acabo de empesar, aunque ya tenía algunos conocimientos rudimentarios de cosas básicas, como el alfabeto y como meterlo en la computadora, y sobre que tipo de idioma es el ruso.

A medida que vaya avanzando en la creación de este programa, voy a ponerlo aquí... así pues se va entendiendo más... así que este tema, pues puede durar por lo menos, un año.

Saludos.
View user's profile Send private message Send e-mail
PostPosted: Wed 20th Feb 4:32 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




PARSER SENTENCIAL RUSO
Autor: Sirius.

El aprendizaje de una lengua, implica esencialmente.

1. El aprender sus reglas gramaticales.
2. El aprender el léxico del idioma.

Un libro que tengo, la“Guia Manual de Conversación Ruso-Español”, es un documento muy completo que incluye entre sus componentes (que no se analizarán aquí), un léxico de aprox. 1500 palabras rusas, que con un estudio asiduo de (digamos) 10 palabras por día, puede estudiarse en 150 días (5 meses).

El léxico ruso tal como está dado ahí, puede dividirse en una tipología de “formas léxicas” que tienen sus propias reglas morfológicas y están asociadas a determinadas reglas sintácticas. Dicha clasificación es:

1. Sustantivos.
2. Adjetivos.
3. Numerales.
4. Pronombres
5. Verbos.
6. Adverbios.
7. Preposiciones.
8. Conjunciones.
9. Palabras conjuntivas.
10. Partículas.

Como se ve, la división es muy similar al español, ya que aunque parezcan muy diferentes, el ruso y el español son ambos idiomas indoeuropeos, con muchas reglas comunes (y también muchas diferentes).

El objetivo es crear tablas individuales para cada uno de los tipos de formas léxicas, con toda la información necesaria, para que una macro específica de Word transcriba esta información en forma de “predicados” de Prolog, cuya estructura se irá desarrollando a medida que se estudien las palabras (y las reglas léxicas asociadas), con el fin de crear un parser léxico, y posteriormente un traductor automático de ese idioma al español (o al inglés).

Esta aproximación al aprendizaje del léxico, aunque parezca demasiado ambiciosa, en realidad es sinérgica:

El tratar de automatizar el análisis sintáctico del ruso en una computadora, forzará al programador (y de un modo divertido) al entendimiento profundo de la mofo sintaxis rusa, a medida que el léxico se domine, de modo incremental.

Tal es la ironía del procesamiento de lenguaje natural en la computadora: Que el programador que puede hacerlas, termina tal vez, no necesitando sus propias herramientas.

El diseño de las tablas de estudio, las macros creadoras de hechos, el estudio de la mofo sintaxis de cada palabra individual, y el del los programas parser/traductor… es un todo integrado y orgánico, que se va desarrollando a medida que se avanza, en una aventura de descubrimiento… en la que tal vez no se sepa que pase a la vuelta de la esquina.

Como filosofía de estudio, que se pudiera aplicar a otras áreas…. eso es inapreciable.

++++++++++++++++++++++++++++++++++

1. SUSTANTIVOS

Campos:
stem parte invariable de la palabra
gen masculino, femenino o neutro [m, f, n]
dnom Desinencia en nominativo singular.
ani animado o inanimado [a, i]
gse Desinencia del genitivo singular.
seman significado en español.
dsing desinencias en singular (6). [Nom, Gen, Dat, Acus, Instr, Prep]
dplur desinencias en plural (6). [Nom, Gen, Dat, Acus, Instr, Prep]

• Las desinencias son asignadas a la raíz por medio de una serie de reglas, dadas en tablas en la parte de la gramática de sustantivos.
• Cada tabla define una o más reglas.
• Se supone que la suma de estas reglas, debe cubrir cualquier sustantivo encontrado.

Aunque el sistema para encontrar las desinencias en Ruso es complicado, tiene reglas claras de clasificación, secuenciales y regulares, muy susceptibles de ser programadas en forma “escalonada”. La clasificación es de tres pasos.

1. Por letra final del la raíz.
2. Por el género del sustantivo [m, n, f].
3. Por la desinencia del nominativo singular.
4. Si el sustantivo es animado o inanimado [a, i].

El resultado final de la clasificación, es el determinar dos listas:

• Las desinencias en singular, y
• las desinencias en plural.

Además de estas reglas, se tienen los campos D_sing, y D_plur para los casos en que se tenga un sustantivo “ideosincrático” y se deseen meter las desinencias a mano, y por lo tanto, no se usan las reglas automáticas.


stem gen dnom ani gse seman dsing dplur
абонент m i a suscripción [ , а, у, а, , е] [ы, ов, ам, ов, ами, ах]


Pseudo código para determinar las desinencias, deberá ser en global una forma CASE...

++++++++++++

if last(stem) in {б в г д з к л м н п р с т ф х } /* consonantes duras*/
.
.
.

if last(stem) in { } /* consonantes blandas*/

++++++++++
View user's profile Send private message Send e-mail
PostPosted: Sat 1st Mar 6:08 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




Siguo tratando de comenzar un programa para el analisis sintàctico del ruso... tengo algunos problemas, ya que no se la codificaciòn interna del cyrìlico en el editor de Visual Prolog... aunque no parece ser un problema irresoluble, sino màs bien, que pide algo de ingenio.

El orden en el que debe estudiarse (segùn yo) el idioma ruso es el siguiente...

Particulas
Conjunciones
Palabras conjuntivas.
Preposiciones
Adverbios


++++++++++++++++++

Numerales
Pronombres
Adjetivos
Sustantivos
Verbos

++++++++++++++++++

Esta ordenaciòn lexica està ordenada de menor a mayor complejidad.

Las partìculas son inflexibles, absolutamente... son parecidas a las partìculas alemanas en que son mas o menos completamente opcionales.

Las conjunciones tambièn son inflexibles... pero tienen un esquema de subcategorizaciòn sintàctica, aunque por supuesto muy intuitiva y no representan problema de aprendizaje.

Existen cietas cosas llamadas "palabras conjuntivas", algunas de ellas se declinan, pero no dan problemas, porque son muy pocas.

Las preposiciones comandan algunos de los 5 casos diferentes al nominativo. En si mismas son inflexibles.

Los adverbios en grado positivo, tampoco dan problemas... aunque sus grados comparativo y superlativo interaccionan de manera extraña con los adjetivos. Pero es posible hacer trampa aquì, y pasar esa complejidad a los adjetivos, cuando se toquen.

+++++++++++++++++++++++

En el vocabulario del libro de texto que tengo, el total de palabras de estas categorìas anteriores, es aproximadamente 300 palabras (de un universo de 1500 lexemas).

Eso està muy bien, pues con ellas se cubre el 50% de las categorìas lèxicas.

Incluso me estoy proponiendo el aprender ruso en alrededor de 1 año, como una meta muy ambiciosa.

Saludos.


Last edited by Sirius on Thu 27th Mar 8:58 pm; edited 2 times in total
View user's profile Send private message Send e-mail
PostPosted: Sat 1st Mar 6:18 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




Wikipedia: Cyrillic Alphabet...

http://en.wikipedia.org/wiki/Cyrillic_alphabet

Hay mucha informaciòn sobre codificaciòn electrònica que me puede ayudar despues, sobre todo tratar de encontrar un programa que pueda traducir del Unicode a la codificaciòn interna del VP.

Algo que me molesta: No hay mucha informaciòn sobre "sequence of strokes" para estas letras... al parecer no es algo que se considere tan importante como en la escritura china...

... y sin embargo, apenas ayer pude descubrir como escribir una

"Д"

aceptable!!! Sad Sad.
View user's profile Send private message Send e-mail
PostPosted: Thu 27th Mar 9:05 pm Reply with quote
Sirius
Site Admin
Joined: 15 Jan 2008
Posts: 541




1. PARTICULAS

• Las partículas no tienen ligadas reglas morfológicas, ya que son partículas totalmente invariables.
• Al igual que en el Alemán, las partículas rusas se usan para añadir ciertas sutilezas en la frase.

Campos:
stem Parte invariable de la palabra
seman Equivalente en español.


Code:
Num.   stem   seman
1   бы   v-SUBJ = v-PAST + бы
2   вон   allí
3   вот   aquí
4   да   sí
5   даже   incluso, aún
6   же   igual
7   конечно   ¡claro!
8   ли   ?
9   не   no
10   нет   no
11   пожалуйста   por favor; de nada
12   правильно   bien
13   спасибо   gracias
14   только   solo, solamente

Definitivamente, el estudio del idioma ruso debe empezar por aquí… por estas partículas que no tienen ninguna complicación morfológica o sintáctica.

Colocándonos en el inicio de la tabla (en la celda donde está el “1”), la siguiente macro genera una serie de hechos en PROLOG con el siguiente formato:


++++++++++++++++++++++

partic("бы","v-SUBJ = v-PAST + бы").
partic("вон","allí").
partic("вот","aquí").
partic("да","sí").
partic("даже","incluso, aún").
partic("же","igual").
partic("конечно","¡claro!").
partic("ли","?").
partic("не","no").
partic("нет","no").
partic("пожалуйста","por favor; de nada").
partic("правильно","bien").
partic("спасибо","gracias").
partic("только","solo, solamente").


Sub partic()
'
' partic Macro
' Macro grabada el 24/02/2008 por NUEVO
'
For I = 1 To 14
Selection.MoveRight Unit:=wdCell
Selection.Copy
Windows("destino").Activate
ActiveWindow.Panes(1).Activate
Selection.TypeText Text:="partic("""
Selection.PasteAndFormat (wdPasteDefault)
Selection.TypeText Text:=""","""
Windows("LEXICO RUSO_a").Activate
ActiveWindow.Panes(1).Activate
Selection.MoveRight Unit:=wdCell
Selection.Copy
Windows("destino").Activate
ActiveWindow.Panes(1).Activate
Selection.PasteAndFormat (wdPasteDefault)
Selection.TypeText Text:=""")."
Selection.TypeParagraph
Windows("LEXICO RUSO_a").Activate
ActiveWindow.Panes(1).Activate
Selection.MoveRight Unit:=wdCell
Next I
End Sub


• El nombre del archivo de Word en el cual se van poniendo los predicados, se llama “destino.doc” y debe estar abierto al momento de ejecutar esta macro.
• La macro, aunque se ve algo complicada, en realidad es muy simple de crear con el grabador de macros.

Ojo: El Turbo Prolog al parecer no puede manejar el código escrito en ruso. Por lo tanto, una solución para seguir este camino debe ser...

• Tratar de resolver este problema sobre la codificación y el desplegado del cirílico en PROLOG.
• Manejar esto con convertidores de transliteración, lo que es bastante no-deseable.



2. CONJUNCIONES

• Las conjunciones no tienen ligadas reglas morfológicas, ya que son partículas totalmente invariables.
• Las conjunciones pueden tener asociadas reglas de subcategorización sintáctica.

Campos:
stem Parte invariable de la palabra
seman Equivalente en español.


Code:
Num.   stem   seman
1   а   y; pero, sino
2   если   si
3   и   y, e
4   и…и   y… y; tanto… como
5   или   o, u
6   но   pero
7   чем   que; con qué
8   что   qué; que
9   чтобы   que; para, para que
10   потому что   porque

A partir de esta tabla, se crea una serie de predicados de PROLOG

conj("а","y; pero, sino").
conj("если","si").
conj("и","y, e").
conj("и…и","y… y; tanto… como").
conj("или","o, u").
conj("но","pero").
conj("чем","que; con qué").
conj("что","qué; que").
conj("чтобы","que; para, para que").
conj("потому что","porque").




3. PALABRAS CONJUNTIVAS

• Son pronombres y adverbios que son usados en papel de conjunciones.
• La única forma de distinguirlas de las otras, sería por medio de reglas de subcategorización. Es decir, más adelante se debe introducir reglas de subcategorización, al igual que para las conjunciones.

Campos:
stem Parte invariable de la palabra
seman Equivalente en español.


Code:
Num.   stem   seman
1   кто   quien
2   когда   cuando
3   почему   porque
4   что   que
5   где   donde
6   зачем   para que
7   куда   a donde
8   сколько   cuanto
9   откуда   de donde


Esto se tiene que reducir a predicados de PROLOG en donde se introduzcan las palabras conjuntivas.

p_conj("кто","quien").
p_conj("когда","cuando").
p_conj("почему","porque").
p_conj("что","que").
p_conj("где","donde").
p_conj("зачем","para que").
p_conj("куда","a donde").
p_conj("сколько","cuanto").
p_conj("откуда"," de donde").




4. PREPOSICIONES

• Las preposiciones no tienen ligadas reglas morfológicas, ya que son partículas totalmente invariables.
• Las preposiciones rigen un caso particular que afecta la morfología de palabras asociadas. Por cierto, ninguna preposición rusa rige en nominativo (al igual que en el Alemán). .
• Las preposiciones pueden tener asociadas reglas de subcategorización sintáctica.

Campos:
stem Parte invariable de la palabra
caso Gen., Dat., Acc., Instr., Prep. = [g, d, a, i, p]
seman Equivalente en español.


Code:
Num   stem   caso   seman
1   без   g   sin; menos
2   для   g   para
3   до   g   hasta
4   из   g   de, desde; con
5   около   g   cerca de
6   от   g   de, desde
7   после   g   después de
8   с   g   de
9   у   g   junto a, al lado de, a
10   к   d   hacia, a
11   ко   d   hacia, a
12   по   d   por
13   в   a   en, a
14   за   a   detrás de; durante, en
15   на   a   en, a
16   через   a   a través de; dentro de, al cabo de
17   над   i   sobre; encima de
18   с   i   de, desde; con
19   со   i   de, desde; con
20   в   p   en, a
21   на   p   en, a
22   о   p   sobre, acerca de
23   об   p   sobre, acerca de
24   обо   p   sobre, acerca de


<aquí falta revisarlas con el diccionario grande>


5. ADVERBIOS

• En el ruso los adverbios son palabras indeclinables, que se emplean para modificar verbos (хорошо играть), adjetivos (совсем холодный) y otros adverbios (очень хорошо).
• Al igual que en otros idiomas indoeuropeos como el Español y el Alemán, en el Ruso los adverbios tienen tres grados: grado positivo, comparativo y superlativo.
• De acuerdo a su semántica, los adverbios se pueden dividir en 6 grupos. (1.) Adverbios de tiempo, (2.) Adverbios de lugar y de dirección, (3.) Adverbios de modo, (4.) Adverbios de cantidad y de grado, (5.) Adverbios de finalidad y causa, (6.) Adverbios predicativos.

Campos:
stem Parte invariable de la palabra
seman Equivalente en español.


A. Adverbios de tiempo.

Code:
Num   stem   seman
1   когда   cuando
2   тогда   entonces
3   зимой   en invierno
4   весной   en primavera
5   летом   en verano
6   осенью   en otoño
7   утром   por la mañana
8   днём   de día
9   вечью   xxxxxxxx
10   круглочсуточно   todo el día
11   позавчера   anteayer
12   вчера   tarde / noche (gen?)
13   сегодня   hoy
14   завтра   mañana
15   послезавтра   pasado mañana
16   скоро   pronto
17   нескоро   no pronto
18   сейчас   ahora
19   сначала   primero
20   потом   después
21   рано   temprano
22   поздно   tarde
23   давно   hace tiempo
24   недавно   hace poco
25   раньше   más temprano
26   позже   más tarde
27   часто   frecuentemente
28   обычно   habitualmente
29   ежедневно   cada día
30   ежегодно   cada año
31   всегда   siempre
32   иногда   a veces
33   редко   raramente
34   никогда   nunca







B. Adverbios de lugar y de dirección.

Code:
Num   stem   seman
1   где   donde
2   где-то   en alguna parte
3   где-нибудь   en alguna parte
4   тут   aquí
5   здесь   aquí
6   там   allí, allá
7   близко   cerca
8   поблизости   al lado, muy cerca
9   недалеко   no lejos = cerca
10   далеко   lejos
11   издалека   desde lejos
12   впереди   delante
13   вперёд   adelante
14   спереди   por delante
15   сзади   detrás, por detrás
16   назад   atrás
17   сзади   detrás, por detrás
18   внизу   abajo
19   вниз   abajo
20   снизу   de abajo, por debajo
21   наверху   arriba
22   наверх   hacia arriba
23   вверх   arriba
24   сверху   de arriba
25   слева   a la izquierda, del lado izquierdo
26   налево   a la izquierda
27   налево   a la izquierda
28   влево   a la izquierda
29   слева   a la izquierda, del lado izquierdo
30   справа   a la derecha
31   направо   a la derecha
32   направо   a la derecha
33   вправо   a la derecha
34   справа   a la derecha
35   прямо   derecho, recto
36   дома   en casa
37   домой   a casa


<Aquí cabe una buena explicación sobre los cambios de los adverbios>



C. Adverbios de modo.

Code:
Num   stem   seman
1   весело   alegremente
2   интересно   interesante
3   неинтересно   no interesante
4   приятно   agradable
5   правильно   correctamente
6   неправильно   incorrectamente
7   неплохо   no mal
8   хорошо   bien
9   плохо   mal
10   успешно   con éxito
11   безуспешно   en vano
12   как   como
13   как-ето   xxxx
14   как-нибудь   cualquiera
15   так   así
16   тоже   también / tampoco
17   быстро   rápidamente
18   медленно   lentamente
19   громко   en voz alta
20   тихо   silenciosamente
21   вместе   juntos / al mismo tiempo
22   вничью   en empate
23   пешком   a pie
24   по-испански   en Español
25   по-английски   en Inglés
26   по-русски   en Ruso
27   по-французки   en Francés



D. Adverbios de cantidad y de grado.

Code:
Num   stem   seman
1   сколько   cuánto
2   столько   tanto
3   мало   poco
4   менее   menos
5   наименее   el menos
6   много   mucho
7   больше   más
8   более   más
9   наиболее   el más
10   немного   un poco
11   очень   mucho / muy
12   совсем   completamente
13   совершенно   enteramente
14   слишком   demasiado
15   чересчур   excesivamente
16   ещё   todavía
17   уже   ya
18   чуть-чуть   un poquito
19   вдвое   doble
20   втрое   triple



E. Adverbios de finalidad y causa.

Code:
Num   stem   seman
1   почему   por qué
2   почему-то   no sé
3   потому   por eso
4   поэтому   por eso
5   зачем   para qué
6   зачем-то   con algún fin
7   затем   después
8   нарочно   adrede
9   нечаянно   sin querer


F. Adverbios predicativos.

Code:
Num   stem   seman
1   жарко   caliente
2   душно   bochornoso, asfixiante
3   тепло   caluroso
4   порхладно   xxxxxxxxxxx
5   холодно   frio
6   весело   alegremente
7   интересно   interesante
8   хорошо   bien
9   плохо   mal
10   приятно   xxxxxxxx
11   неприятно   desagradable
12   жаль   lastimoso
13   нужно   necesario
14   можно   posible
15   нельзя   imposible
16   замужем   casada
View user's profile Send private message Send e-mail

Procesamiento de Lenguaje Natural...
  EL COLISEO Forum Index » Foro de la Ciencia
You can post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
All times are GMT - 5 Hours  
{BOOKMARK_LINKS>
Page 1 of 1  

  
  
 Post new topic  Reply to topic  


Powered by phpBB © 2001-2004 phpBB Group
Designed for Trushkin.net | Themes Database
Forum hosted for free by Free Forum Hosting - YourFreeBB