Table des matières:

Comment faire une A.I. Partie 4 : 3 étapes
Comment faire une A.I. Partie 4 : 3 étapes

Vidéo: Comment faire une A.I. Partie 4 : 3 étapes

Vidéo: Comment faire une A.I. Partie 4 : 3 étapes
Vidéo: Comment Utiliser Chatgpt COMME UN PRO (Tuto 3 étapes) 2024, Juillet
Anonim
Comment faire une A. I. Partie 4
Comment faire une A. I. Partie 4

L'autre jour, je parlais avec mon IA, et j'ai dit à

il, "Je vais à l'étage pour dîner, nous avons STEAK".

Cependant, le logiciel de reconnaissance vocale (SR) a interprété cela comme « … nous avons un enjeu »

J'ai rencontré un problème similaire (mais différent) plus tôt lorsque je parlais d'une photographie, et j'ai dit le mot « IMAGE ». Le logiciel SR a interprété cela comme « PITCHER »

Le correctif pour cela était un simple recyclage du logiciel SR. (Ou peut-être ma prononciation)

Mais quand je prononce les mots STEAK ou STAKE, je les prononce exactement de la même manière, et le recyclage du logiciel SR n'aidera pas dans des cas comme celui-ci.

Étape 1:

Une idée pour résoudre le "problème des homonymes".

Je dois regarder le mot « dans son contexte » pour déterminer quelle orthographe utiliser. Le cerveau humain le fait assez facilement, et vous ne savez même pas que vous le faites.

Cela signifie que les autres mots d'une phrase sont examinés et que votre cerveau décide quelle orthographe convient le mieux. Maintenant, comment puis-je faire cela dans le code ?

Mon I. A. Le programme analyse une phrase en un tableau de mots individuels à l'aide de la fonction « Split » de Visual Basic (VB). [MyArray = Split(InputSentence, " ")]

Chaque mot du tableau peut être vérifié pour voir s'il s'agit d'un homonyme possible en regardant dans une table de base de données contenant une liste d'homonymes.

Bien sûr, créer une autre table signifie que nous devrons la remplir avec des données, et nous devrons également pouvoir conserver les données dans la table.

Un sous-programme d'auto-apprentissage peut être construit plus tard pour numériser un tas de texte, rechercher des mots dans ma table d'homonymes et capturer d'autres mots de « contexte ». Hmmmmm, peut-être faut-il plusieurs tables…

L'écriture de ces « Instructables » m'aide à « rechercher » une solution à un défi de programmation.

Étape 2:

Image
Image

Structure de la table HomonymContext

Ma première idée était un tableau contenant des mots, des orthographes alternatives et des mots de « contexte ». L'idée était de rechercher dans une phrase contenant un homonyme, d'autres mots qui donnent le « contexte », afin que le programme puisse déterminer quelle orthographe utiliser. Le tableau contient également une colonne nommée « WordDef » pour contenir la définition du mot, qui est plus destinée à l'humain qui maintient le tableau qu'à l'IA. code.

Pour rechercher chaque mot, je peux utiliser du code VB et du code SQL comme…

Pour chaque mot dans MyArray

Query = "Sélectionnez le mot de tblHomonynContext où mot = '" & mot & "'"

si cette requête renvoie un résultat, alors le mot est un homonyme

Prochain

Ce n'est qu'un pseudo-code à ce stade - je n'ai pas encore écrit le code exact, ni compris tous les détails. Mais n'hésitez pas à prendre mon idée et à la mettre en œuvre en utilisant votre propre langage de programmation préféré.

Étape 3:

Image
Image

Si votre phrase d'entrée contient un homonyme, vous pouvez maintenant

exécutez du code VB qui vérifiera les autres mots de votre phrase, avec les mots de contexte dans les résultats de la requête.

Vous pouvez également faire tout cela dans une procédure stockée SQL, qui peut s'exécuter plus rapidement.

La fonction VB "InStr()" renverra un nombre supérieur à zéro, si une chaîne est contenue dans une autre chaîne, ou elle renverra zéro, si la chaîne n'est PAS contenue dans l'autre.

Instr() renvoie en fait la position de la chaîne contenue. Si vous voulez juste savoir si String1 contient String2, vous pouvez utiliser un code comme « If InStr(String1, String2) > 0 … »

Vous devrez construire ce code dans votre langage de programmation préféré.

La table HomonymContext n'est pas une très bonne conception. Il contient de nombreuses données répétées, et celles-ci sont considérées comme « non normalisées » par les concepteurs de bases de données. Une meilleure façon d'implémenter cette fonctionnalité serait d'utiliser deux tables, dans une relation parent-enfant. Une table (The Parent) contiendrait une liste d'homonymes, leurs définitions, ainsi qu'un ID de ligne. Cet ID de ligne est utilisé comme clé de la "table enfant" qui contiendrait les mots et leurs mots de contexte.

Ce serait plus facile à interroger (et à maintenir) que ma conception originale.

Conseillé: