Pregunta

Estoy utilizando el término " Codificación léxica " por mi falta de una mejor.

Se puede decir que una palabra es la unidad fundamental de comunicación en lugar de una letra. Unicode intenta asignar un valor numérico a cada letra de todos los alfabetos conocidos. Lo que es una Carta a un idioma, es un Glifo a otro. Unicode 5.1 asigna más de 100,000 valores a estos glifos actualmente. De las aproximadamente 180,000 palabras que se usan en inglés moderno, se dice que con un vocabulario de aproximadamente 2,000 palabras, debería poder conversar en términos generales. Una "codificación léxica" codificaría cada palabra, no cada letra, y las encapsularía dentro de una oración.

// An simplified example of a "Lexical Encoding"
String sentence = "How are you today?";
int[] sentence = { 93, 22, 14, 330, QUERY };

En este ejemplo, cada token en la cadena se codificó como un entero. El esquema de codificación aquí simplemente asignó un valor int basado en la clasificación estadística generalizada del uso de palabras y asignó una constante al signo de interrogación.

En última instancia, una palabra tiene un deletreo & amp; Aunque significa Cualquier " Léxico de codificación " preservaría el significado y la intención de la oración en su conjunto, y no sería específico del idioma. Una oración en inglés se codificaría en " ... elementos atómicos de significado neutral del idioma ... " que luego podría reconstituirse en cualquier idioma con una forma sintáctica y estructura gramatical estructuradas.

¿Cuáles son otros ejemplos de " Codificación Lexical " técnicas?


Si estaba interesado en saber de dónde provienen las estadísticas de uso de palabras:
http://www.wordcount.org

¿Fue útil?

Solución

Hay varios problemas importantes con esta idea. En la mayoría de los idiomas, el significado de una palabra y la palabra asociada con un significado cambian muy rápidamente.

Tan pronto como tenga un número asignado a una palabra, el significado de la palabra cambiará. Por ejemplo, la palabra " gay " solía significar solo " feliz " o "merry", pero ahora se usa principalmente para referirse a homosexual. Otro ejemplo es el morfema "gracias" que originalmente vino del alemán " danke " que es solo una palabra Otro ejemplo más es " Adiós " que es un acortamiento de "Dios te bendiga".

Otro problema es que, incluso si uno toma una instantánea de una palabra en cualquier momento, el significado y el uso de la palabra estaría en discusión, incluso dentro de la misma provincia. Cuando se escriben diccionarios, no es raro que los académicos responsables discutan sobre una sola palabra.

En resumen, no podrías hacerlo con un idioma existente. Debería considerar inventar un lenguaje propio, para este propósito, o usar un lenguaje bastante estático que ya se haya inventado, como el interlingua o el esperanto. Sin embargo, incluso estos no serían perfectos para el propósito de definir morfemas estáticos en un léxico siempre estándar.

Incluso en chino, donde hay un mapeo aproximado del carácter al significado, aún no funcionaría. Muchos caracteres cambian su significado dependiendo de ambos contextos, y qué caracteres los preceden o los colocan después.

El problema está en su peor momento cuando intentas traducir entre idiomas. Puede haber una palabra en inglés, que se puede usar en varios casos, pero no se puede usar directamente en otro idioma. Un ejemplo de esto es " gratis " ;. En español, ya sea " libre " que significa " libre " como en el discurso, o " gratis " que significa " libre " como en la cerveza se puede usar (y usar la palabra equivocada en lugar de " gratis " se vería muy divertido).

Hay otras palabras que son aún más difíciles de definir, como la palabra hermoso en coreano; al llamar hermosa a una chica, habría varios candidatos para la sustitución; pero cuando llamas hermosa a la comida, a menos que quieras decir que la comida es buena, hay varios otros candidatos que son completamente diferentes.

Lo que se reduce a esto es que, aunque solo usamos alrededor de 200 mil palabras en inglés, nuestros vocabularios son realmente más amplios en algunos aspectos porque asignamos muchos significados diferentes a la misma palabra. Los mismos problemas se aplican al esperanto e interlingua, y a todos los demás idiomas significativos para la conversación. El habla humana no es una máquina bien definida, bien engrasada. Entonces, aunque podría crear un léxico en el que cada " palabra " si tuviera un significado único, sería muy difícil y casi imposible para las máquinas que utilizan las técnicas actuales traducir de cualquier lenguaje humano a su léxico estandarizado especial.

Esta es la razón por la cual la traducción automática sigue siendo mala, y lo será durante mucho tiempo. Si puede hacerlo mejor (y espero que pueda), entonces probablemente debería considerar hacerlo con algún tipo de beca y / o financiamiento de la universidad / gobierno, trabajando para lograr un PHD; o simplemente haga un montón de dinero, lo que mantenga a su barco al vapor.

Otros consejos

Esta pregunta afecta más a la lingüística que a la programación, pero para los lenguajes que son altamente sintéticos (con palabras que se componen de múltiples morfemas combinados), puede ser un problema muy complejo tratar de "número". todas las palabras posibles, a diferencia de idiomas como el inglés que son al menos algo aislados, o idiomas como el chino que son altamente analíticos.

Es decir, es posible que las palabras no se puedan dividir y contar fácilmente en función de sus glifos constituyentes en algunos idiomas.

Este artículo de Wikipedia en Aislar idiomas puede ser útil para explicar el problema.

Es bastante fácil inventar uno por ti mismo. Convierta cada palabra en un bytestream canónico (digamos, UCS32 descompuesto en minúsculas), luego córtela en un entero. 32 bits probablemente serían suficientes, pero si no, entonces 64 bits ciertamente lo harían.

Antes de responder por una respuesta sarcástica, considera que el propósito de Unicode es simplemente asignar a cada glifo un identificador único. No para clasificarlos, ordenarlos o agruparlos, sino para asignarlos a un identificador único en el que todos estén de acuerdo.

¿Cómo manejaría el sistema la pluralización de sustantivos o la conjugación de verbos? ¿Tendrían cada uno su propio " Unicode " valor?

Como esquema de traducción, es probable que esto no funcione sin mucho más trabajo. Le gustaría pensar que puede asignar un número a cada palabra y luego traducirlo mecánicamente a otro idioma. En realidad, los idiomas tienen el problema de varias palabras que se escriben de la misma manera "el viento sopla su cabello hacia atrás" contra " da cuerda a tu reloj " ;.

Para la transmisión de texto, donde presumiblemente tendría un alfabeto por idioma, funcionaría bien, aunque me pregunto qué ganaría allí en lugar de usar un diccionario de longitud variable, como el uso de ZIP.

Esta es una pregunta interesante, pero sospecho que la pregunta por razones equivocadas. ¿Está pensando en este 'Unicode' léxico como algo que le permitiría dividir las oraciones en elementos atómicos de significado neutral para el lenguaje y luego poder reconstituirlas en algún otro lenguaje concreto? ¿Como medio para lograr un traductor universal, quizás?

Incluso si puede codificar y almacenar, digamos, una oración en inglés usando un 'unicode léxico', no puede esperar leerlo y convertirlo mágicamente en, digamos, chino manteniendo el significado intacto.

Tu analogía con Unicode, sin embargo, es muy útil.

Tenga en cuenta que Unicode, si bien es un código 'universal', no incorpora la pronunciación, el significado o el uso del personaje en cuestión. Cada punto de código se refiere a un glifo específico en un idioma específico (o más bien al script utilizado por un grupo de idiomas). Es elemental en el nivel de representación visual de un glifo (dentro de los límites de estilo, formato y fuentes). El punto de código Unicode para la letra latina "A" es solo eso. Es la letra latina 'A'. No puede representarse automáticamente como, por ejemplo, la letra árabe Alif (& # 65165;) o la letra Indic (Devnagari) 'A' (& # 2309;).

Siguiendo la analogía con Unicode, su Unicode léxico tendría puntos de código para cada palabra (forma de palabra) en cada idioma. Unicode tiene rangos de puntos de código para un script específico. Tu Unicode léxico tendría una gama de códigos para cada idioma. Las diferentes palabras en diferentes idiomas, incluso si tienen el mismo significado (sinónimos), tendrían que tener diferentes puntos de código. La misma palabra que tiene diferentes significados, o diferentes pronunciaciones (homónimos), tendría que tener diferentes puntos de código.

En Unicode, para algunos idiomas (pero no para todos) donde el mismo personaje tiene una forma diferente dependiendo de su posición en la palabra, por ejemplo, en hebreo y árabe, la forma de un glifo cambia al final de la palabra, entonces tiene un punto de código diferente. Del mismo modo, en su Unicode léxico, si una palabra tiene una forma diferente dependiendo de su posición en la oración, puede garantizar su propio punto de código.

Quizás la forma más fácil de encontrar puntos de código para el idioma inglés sería basar su sistema en, por ejemplo, una edición particular del Oxford English Dictionary y asignar un código único a cada palabra de forma secuencial. Tendrá que usar un código diferente para cada significado diferente de la misma palabra, y tendrá que usar un código diferente para diferentes formas, por ejemplo, Si la misma palabra se puede usar como sustantivo y como verbo, entonces necesitará dos códigos

Luego, tendrá que hacer lo mismo para cada otro idioma que desee incluir, utilizando el diccionario más autorizado para ese idioma.

Lo más probable es que este ejercicio sea más esfuerzo de lo que vale la pena. Si decide incluir todos los idiomas vivos del mundo, además de algunos históricos muertos y algunos ficticios, como lo hace Unicode, terminará con un espacio de código tan grande que su código tendría que ser extremadamente amplio para adaptarse a él. No obtendrá nada en términos de compresión: es probable que una oración representada como una cadena en el idioma original ocupe menos espacio que la misma frase representada como código.

P.S. Para aquellos que dicen que esta es una tarea imposible porque los significados de las palabras cambian, no veo eso como un problema. Para usar la analogía de Unicode, el uso de las letras ha cambiado (es cierto que no es tan rápido como el significado de las palabras), pero a Unicode no le preocupa que 'th' solía ser pronunciado como 'y' en la Edad Media. Unicode tiene un punto de código para 't', 'h' y 'y' y cada uno cumple su propósito.

P.P.S. En realidad, a Unicode le preocupa que 'oe' también sea '& # 339;' o que se puede escribir 'ss' '& # 223;' en aleman

Este es un pequeño ejercicio interesante, pero le insto a que lo considere como una introducción al concepto de la diferencia en el lenguaje natural entre tipos y tokens.

Un tipo es una instancia única de una palabra que representa todas las instancias. Un token es una cuenta única para cada instancia de la palabra. Déjame explicarte esto con el siguiente ejemplo:

" John fue a la tienda de pan. Él compró el pan. & Quot;

Aquí hay algunos conteos de frecuencia para este ejemplo, donde los conteos significan el número de tokens:

John: 1
went: 1
to: 1
the: 2
store: 1
he: 1
bought: 1
bread: 2

Ten en cuenta que " la " se cuenta dos veces: hay dos fichas de " la " ;. Sin embargo, tenga en cuenta que si bien hay diez palabras, solo hay ocho de estos pares de palabra a frecuencia. Las palabras se dividen en tipos y se emparejan con su conteo de tokens.

Los tipos y los tokens son útiles en la PNL estadística. " Codificación léxica " por otro lado, me cuidaría. Esto es una continuación de los enfoques a la PNL mucho más anticuados, con abundantes preprogramaciones y racionalismo. Ni siquiera sé de ningún MT estadístico que realmente asigne una " dirección " " a una palabra Por un lado, hay demasiadas relaciones entre las palabras para construir cualquier tipo de ontología numérica bien pensada, y si solo estamos lanzando números a las palabras para categorizarlas, deberíamos estar pensando en cosas como la gestión de la memoria y la asignación de velocidad. .

Sugeriría revisar NLTK, el kit de herramientas de lenguaje natural, escrito en Python, para una introducción más extensa a la PNL y sus usos prácticos.

En realidad, solo necesitas unas 600 palabras para un vocabulario medio decente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top