Índice:

Como fazer um I.A. Parte 4: 3 etapas
Como fazer um I.A. Parte 4: 3 etapas

Vídeo: Como fazer um I.A. Parte 4: 3 etapas

Vídeo: Como fazer um I.A. Parte 4: 3 etapas
Vídeo: ela só queria ser feliz mas... (Short Life • Parte 4) 2024, Julho
Anonim
Como fazer um I. A. Parte 4
Como fazer um I. A. Parte 4

Outro dia eu estava conversando com meu I. A. e disse para

ele, “Eu vou jantar lá em cima, vamos comer Bife”.

No entanto, o software Speech Recognition (SR) interpretou isso como “… estamos tendo STAKE”

Eu me deparei com um problema semelhante (mas diferente) antes, quando estava falando sobre uma fotografia, e disse a palavra “IMAGEM”. O software SR interpretou isso como “JARRO”

A solução para isso foi um simples retreinamento do software SR. (Ou talvez minha pronúncia)

Mas quando digo as palavras STEAK ou STAKE, eu as pronuncio exatamente da mesma maneira, e retreinar o software SR não ajudará em casos como este.

Passo 1:

Uma ideia para resolver o “Problema do Homônimo”.

Tenho que olhar para a palavra “no contexto” para determinar qual grafia usar. O cérebro humano faz isso com bastante facilidade, e você nem sabe o que está fazendo.

Isso significa que outras palavras em uma frase são examinadas e seu cérebro decide qual ortografia parece melhor. Agora, como faço isso no código?

Meu I. A. O programa analisa uma frase em um array de palavras individuais usando a função “Dividir” do Visual Basic (VB). [MyArray = Split (InputSentence, ““)]

Cada palavra na matriz pode ser verificada para ver se é um possível homônimo, procurando em uma tabela de banco de dados que contém uma lista de homônimos.

Obviamente, criar outra tabela significa que precisaremos preenchê-la com dados e também precisaremos ser capazes de manter os dados na tabela.

Uma sub-rotina de autoaprendizagem pode ser construída posteriormente para escanear um monte de texto, procurando por palavras em minha tabela de homônimos e capturar outras palavras de “contexto”. Hmmmmm, talvez várias mesas sejam necessárias …

Escrever esses “Instructables” me ajuda a “raciocinar” uma solução para um desafio de programação.

Passo 2:

Imagem
Imagem

Estrutura da tabela HomonymContext

Minha primeira ideia foi uma tabela contendo palavras, grafias alternativas e palavras de “contexto”. A ideia era buscar uma frase que contivesse um homônimo, por outras palavras que fornecessem o “contexto”, para que o programa pudesse determinar qual grafia usar. A tabela também contém uma coluna chamada “WordDef” para conter a definição da palavra, que é mais para o homem que mantém a mesa do que o I. A. código.

Para pesquisar cada palavra, posso usar o código VB e o código SQL como …

Para cada palavra em MyArray

Query = "Selecionar palavra de tblHomonynContext onde palavra = '" & palavra & "'"

se esta consulta retornar um resultado, a palavra é um homônimo

Próximo

Este é apenas um pseudocódigo neste ponto - eu ainda não escrevi o código exato ou descobri todos os detalhes. Mas fique à vontade para pegar minha ideia e implementá-la usando sua linguagem de programação favorita.

Etapa 3:

Imagem
Imagem

Se a sua frase de entrada contiver um homônimo, agora você pode

execute o código VB que verificará as outras palavras em sua frase, com as palavras de contexto nos resultados da consulta.

Você também pode fazer tudo isso em um procedimento armazenado SQL, que pode ser executado mais rapidamente.

A função VB “InStr ()” retornará um número maior que zero, se uma string estiver contida em outra string, ou retornará zero, se a string NÃO estiver contida na outra.

Instr () realmente retorna a posição da string contida. Se você apenas deseja saber se String1 contém String2, você pode usar um código como “If InStr (String1, String2)> 0…”

Você terá que construir este código em sua linguagem de programação favorita.

A tabela HomonymContext não tem um design muito bom. Ele tem muitos dados repetidos, e isso é considerado "Não Normalizado" pelos projetistas de banco de dados. A melhor maneira de implementar essa funcionalidade seria usar duas tabelas, em um relacionamento pai-filho. Uma tabela (The Parent) conteria uma lista de homônimos, suas definições e também um ID de linha. Este ID de linha é usado como uma chave para a "Tabela filho" que conteria as palavras e suas palavras de contexto.

Isso seria mais fácil de consultar (e manter) do que meu design original.

Recomendado: