Pergunta

Eu estou usando o termo "Lexical Encoding" pela minha falta de um melhor.

A Palavra é indiscutivelmente a unidade fundamental da comunicação, em oposição a uma carta. Unicode tenta atribuir um valor numérico para cada letra de todos os alfabetos conhecidos. O que é uma Carta a um idioma, é um Glyph para outro. Unicode 5.1 atribui mais de 100.000 valores a esses glifos atualmente. Dos cerca de 180.000 palavras usadas no Inglês Moderno, diz-se que, com um vocabulário de cerca de 2.000 palavras, você deve ser capaz de conversar em termos gerais. A "Lexical Encoding" seria codificar cada palavra não cada letra, e encapsular-los dentro de uma frase.

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

Neste exemplo cada símbolo na corda foi codificado como um número inteiro. O esquema de codificação aqui simplesmente atribuído um valor int baseado em generalizado estatística classificação de uso da palavra, e atribuiu uma constante para o ponto de interrogação.

Por fim, uma palavra tem tanto um Ortografia e Significado embora. Qualquer "Lexical Encoding" preservaria o significado ea intenção da sentença como um todo, e não ser específico de idioma. Um Inglês sentença seria codificado em "elementos atômicos ... idioma neutro de significado ..." , que poderia, então, ser reconstituído para qualquer idioma com uma estrutura sintática Forma e Gramatical estruturado.

O que são outros exemplos de técnicas de "Lexical Codificação"?


Se você estivesse interessado em onde as estatísticas palavra-uso vêm de:
http://www.wordcount.org

Foi útil?

Solução

Seus são vários grandes problemas com essa idéia. Na maioria das linguagens, o significado de uma palavra, ea palavra associada a uma mudança significado muito rapidamente.

Tão logo você teria um número atribuído a uma palavra, antes que o significado da palavra mudaria. Por exemplo, a palavra "gay", utilizado para dizer apenas "feliz" ou "alegre", mas agora é usado principalmente para homossexual média. Outro exemplo é o morfema "obrigado", que originalmente veio do alemão "danke", que é apenas uma palavra. Ainda outro exemplo é "Adeus", que é uma abreviatura de "Deus te abençoe".

Outro problema é que, mesmo que um leva um instantâneo de uma palavra em qualquer ponto do tempo, o significado eo uso da palavra estaria sob disputa, mesmo dentro da mesma província. Quando dicionários estão sendo escritas, não é incomum para os acadêmicos responsáveis ??para discutir sobre uma única palavra.

Em suma, você não seria capaz de fazê-lo com uma linguagem existente. Você teria que considerar inventar uma linguagem de sua preferência, para o efeito, ou usando uma linguagem bastante estática que já foi inventado, como interlíngua ou Esperanto. No entanto, mesmo estes não seria perfeito para efeitos da definição morfemas estáticos em um léxico ever-padrão.

Mesmo em chinês, onde há mapeamento bruto de caráter para que significa, ainda não iria funcionar. Muitos personagens mudam seus significados, dependendo tanto de contexto, e quais caracteres preceder ou postfix-los.

O problema está no seu pior quando você tenta e traduzir entre idiomas. Pode haver uma palavra em Inglês, que pode ser usado em vários casos, mas não pode ser usado diretamente em outro idioma. Um exemplo disso é "livre". Em espanhol, quer "libre", que significa "livre" como na fala, ou "Grátis", que significa "livre" como na cerveja pode ser usado (e usando a palavra errada no lugar de "livre" ficaria muito engraçado).

Há outras palavras que são ainda mais difíceis de colocar um significado ligado, tais como a palavra bonita no coreano; ao chamar uma menina bonita, haveria várias candidatas a substituição; mas ao chamar uma bela comida, a menos que você quer dizer a comida é bom olhar, existem vários outros candidatos que são completamente diferentes.

O que lhe vem para baixo, é que, embora só usamos cerca de 200 mil palavras em Inglês, os nossos vocabulários são realmente maior em alguns aspectos, porque nós atribuímos muitos significados diferentes para a mesma palavra. Os mesmos problemas se aplicam a Esperanto e Interlíngua, e todos os outros linguagem significativa para uma conversa. A fala humana não é um, bem oleada máquina bem definido. Então, embora você poderia criar tal léxico onde cada "palavra" tinha o seu próprio significado único, seria muito difícil, e quase impossível para máquinas usando técnicas atuais para traduzir a partir de qualquer linguagem humana em seu especial léxico padronizados.

É por isso que a tradução máquina ainda é uma porcaria, e por um longo tempo para vir. Se você pode fazer melhor (e eu espero que você pode) então você provavelmente deve considerar fazê-lo com algum tipo de bolsa de estudos e / ou universidade / financiamento do governo, trabalhando para um PHD; ou simplesmente fazer um monte de dinheiro, tudo o que mantém o seu vapor navio.

Outras dicas

Esta questão incide sobre a linguística mais de programação, mas para idiomas que são altamente sintético (com palavras que são compostos de vários morfemas combinado), pode ser um problema muito complexo para tentar "número" que todas as palavras possíveis, ao contrário para línguas como o Inglês, que são pelo menos um pouco de isolamento, ou línguas como o chinês, que são altamente analítica.

Isto é, as palavras não podem ser facilmente quebrada e contou com base em seus glifos constituintes em alguns idiomas.

Este artigo da Wikipedia sobre línguas isoladas pode ser útil para explicar o problema.

É fácil o suficiente para inventar um para si mesmo. Transformar cada palavra em um bytestream canónica (digamos, inferior a caso decomposto UCS32), seguida de hash-o para baixo para um número inteiro. 32 bits provavelmente seria o suficiente, mas se não, então 64 bits certamente.

Antes de ding para dar-lhe uma resposta sarcástica, considere que a finalidade de Unicode é simplesmente atribuir a cada glifo um identificador exclusivo. Não classificar ou espécie ou grupo deles, mas apenas para mapear cada um para um identificador exclusivo que todos concordam.

Como é que o sistema de alça pluralização dos substantivos ou conjugação dos verbos? Será que estes cada um tem seu próprio valor "Unicode"?

Como um esquema de traduções, isso não é, provavelmente, vai trabalho sem muito mais trabalho. Você gostaria de pensar que você pode atribuir um número a cada palavra, então mecanicamente traduzir isso para outro idioma. Na realidade, as línguas têm o problema de múltiplas palavras que estão escritas as mesmas "o vento soprava seu cabelo para trás" versus "o vento o seu relógio".

Para a transmissão de texto, onde você provavelmente tem um alfabeto por idioma, ele iria trabalhar bem, embora eu me pergunto o que você ganharia lá em vez de usar um dicionário de comprimento variável, como ZIP usos.

Esta é uma pergunta interessante, mas eu suspeito que você está perguntando isso pelas razões erradas. Você está pensando desta 'lexical' Unicode' como algo que lhe permitiria quebrar sentenças em elementos atômicos idioma neutro de significado e, em seguida, ser capaz de reconstituí-los em algum outro idioma concreto? Como um meio para alcançar um tradutor universal, talvez?

Mesmo que você pode codificar e armazenar, por exemplo, uma frase Inglês usando um 'lexical unicode', você não pode esperar para lê-lo e magicamente torná-lo em, digamos, chinês mantendo o que significa intacto.

Seu analogia com Unicode, no entanto, é muito útil.

Tenha em mente que Unicode, enquanto um código de 'universal', não incorpora a pronúncia, significado ou uso do personagem em questão. Cada ponto de código refere-se a um glifo específico em um idioma específico (ou melhor, o script usado por um grupo de idiomas). É elementar ao nível representação visual de um glifo (dentro dos limites do estilo, formatação e fontes). O ponto de código Unicode para a letra latina 'A' é apenas isso. É a letra latina 'A'. Não pode automagicamente ser processado como, por exemplo, a letra árabe Alif (?) ou a letra Indic (Devnagari) 'A' (?).

Mantendo a analogia Unicode, o Lexical Unicode teria pontos de código para cada palavra (palavra forma) em cada língua. Unicode tem intervalos de pontos de código para um script específico. Seu lexical Unicode teriam de um intervalo de códigos para cada idioma. palavras diferentes em diferentes línguas, mesmo se eles têm o mesmo significado (sinônimos), teria que ter diferentes pontos de código. A mesma palavra tem significados diferentes, ou diferentes pronúncias (homônimos), teria que ter diferentes pontos de código.

Em Unicode, para alguns idiomas (mas não todos), onde o mesmo personagem tem uma forma diferente de acordo com a sua posição na palavra - por exemplo, em hebraico e árabe, a forma de um glifo muda no final da palavra -, então ele tem um ponto de código diferente. Da mesma forma em sua Lexical Unicode, se uma palavra tem uma forma diferente de acordo com sua posição na frase, pode justificar a sua própria ponto de código.

Talvez a maneira mais fácil para chegar a pontos de código para o idioma Inglês seria basear o sistema em, digamos, uma edição especial do Dicionário Oxford de Inglês e atribuir um código único para cada palavra sequencialmente. Você terá que usar um código diferente para cada significado diferente da mesma palavra, e você terá que usar um código diferente para diferentes formas - por exemplo, se a mesma palavra pode ser usada como um substantivo e como verbo, então você vai precisar de dois códigos

Em seguida, você terá que fazer o mesmo para o outro idioma que deseja incluir -. Usar o dicionário mais autoritário para esse idioma

As chances são de que este exercício é tudo mais esforço do que vale a pena. Se você decidir incluir todas as línguas do mundo que vivem, além de alguns dos mais históricos mortas e algumas fictícias - como Unicode faz - você vai acabar com um espaço de código que é tão grande que seu código teria que ser extremamente ampla para acomodá-lo. Você não vai ganhar nada em termos de compressão -. É provável que uma sentença representada como uma String no idioma original que ocupam menos espaço do que a mesma frase representado como código

P.S. para aqueles que estão dizendo que esta é uma tarefa impossível, porque os significados das palavras mudam, eu não vejo isso como um problema. Para usar a analogia Unicode, o uso de letras mudou (na verdade não tão rapidamente como o significado das palavras), mas não é de qualquer preocupação em Unicode que 'th' costumava ser pronunciado como 'y' na Idade Média. Unicode tem um ponto de código para 't', 'h' e 'y' e que cada um servir o seu propósito.

P.P.S. Na verdade, é de alguma preocupação para Unicode que 'oe' também é 'oe' ou que 'ss' pode ser escrito 'SS' em alemão

Este é um exercício pouco interessante, mas peço-lhe para considerá-lo nada mais do que uma introdução ao conceito da diferença de linguagem natural entre tipos e tokens.

Um tipo é uma única instância de uma palavra que representa todas as instâncias. Um token é uma única contagem para cada instância da palavra. Deixe-me explicar isso com o seguinte exemplo:

"John foi para a loja de pão. Ele comprou o pão."

Aqui estão algumas contagens de freqüência para este exemplo, com as contagens que significa o número de tokens:

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

Note que "a" é contada duas vezes - existem dois sinais de "o". No entanto, nota que, embora existam palavras dez, há apenas oito desses pares palavra-a-frequência. Palavras que estão sendo discriminados ao tipos e emparelhado com a sua contagem de token.

Types e tokens são úteis em PNL estatística. "Encoding lexical", por outro lado, gostaria de olhar para fora. Este é um segue em abordagens muito mais à moda antiga PNL, com pré-programação e abundam racionalismo. Eu nem sequer saber sobre qualquer MT estatística que realmente atribui um "endereço" específico para uma palavra. Há muitas relações entre palavras, para uma coisa, para construir qualquer tipo de bem pensado ontologia numérica, e se estamos apenas jogando números em palavras para categorizá-los, deveríamos estar pensando em coisas como gerenciamento de memória e alocação de velocidade .

Gostaria de sugerir verificando NLTK, o Language Toolkit Natural, escrito em Python, para uma mais extensa introdução à PNL e seus usos práticos.

Na verdade, você só precisa de cerca de 600 palavras para um vocabulário meia decente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top