Aller au contenu


Photo
- - - - -

Librairie pour traiter des phrases


  • Veuillez vous connecter pour répondre
5 réponses à ce sujet

#1 manoaratefy

manoaratefy

    Nouveau membre

  • Membres
  • 4 messages

Posté 18 mars 2017 - 08:08

Bonjour!

 

Pour mon projet (dont j'ai expliqué dans ma présentation), j'ai besoin de traiter des instructions en phrases. Pour l'instant, pas de Text-to-Speech ou de reconnaissance vocale, les instructions seront tapés à la main.

 

D'abord, j'hésite sur le langage : je connais assez VB.NET mais je ne suis pas sûr que les librairies seront 100% compatibles.

 

Pour les librairies, Google m'a orienté pour CoreNLP de Stanford mais je ne sais même pas comment l'utiliser celui-là.

 

Alors, si quelqu'un a quelques liens pour que je creuse davantage ...



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 768 messages
  • Gender:Male

Posté 18 mars 2017 - 11:07

Je ne sais pas si j'ai bien compris.
Supposons que tu écrives une phrase que tu sauvegardes comme un fichier avec le suffixe de n'importe quel langage interprété, alors tu n'auras qu'à exécuter ce fichier.
Suis-je clair ? et ai-je bien compris ?

#3 Didier

Didier

    Membre

  • Membres
  • 22 messages

Posté 18 mars 2017 - 06:31

Bonjour à tous.

 

Voici ce que je propose en Python...

 

Code extrait et adapté du programme que j'utilise pour communiquer avec mon robot KRT1

 

Ca vaut ce que ça vaut et il existe certainement mieux mais ça fonctionne pas trop mal.

 

Didier.

(A bientôt, peut-être)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
# Test d'un chatbot
 
# Importation des librairies nécessaires et suffisantes
import random
import time
 
#import os      # Seulement si l'on veut utiliser le TTS...
               # OK avec Raspberry Pi > Linux Rasbian Pixel + Pico TTS
               # "Dé-commenter" les lignes #os.system("... 
 
# Initialisation des variables
 
    # Variables modifiables
 
LeNom = "Crétin"                                        # Nom du robot
 
    # Variables de réglages
 
ColA = "\x1b[1;32;40m"                                  # Couleur des messages d'actions : Vert
ColK = "\x1b[1;36;40m"                                  # Couleur des messages de KRT1 : Bleu
ColM = "\x1b[1;31;40m"                                  # Couleur de mes messages : Rouge
ColX = "\x1b[1;30;40m"                                  # Couleur des autres messages : Noir                        
 
FCol = "\x1b[0m"                                        # Fin de la coloration du message
 
    # Variables utilisées par le système ( NE PAS MODIFIER - Touche pas à ça p'tit con ! )
 
MessageEcrit = ""                                       # Message vide
MonMessage = ""                                         # Message vide
 
# Dictionnaire - Orthographe non respectée pour tenter de trouver un meilleur phrasé TTS...
 
ReponsesAleatoires = ["Comment ?",
    "Avant peut-être, mais ça cétait avant",
    "Bain voyons",
    "Sai quand même pas très clair tout ça",
    "Cet aussi mon avis et je le partage",
    "Et puis quoi encore ?",
    "Indubitablement",
    "Jallais dire exactement la même chose",           
    "Mais zencore ?",
    "Mais oui mais oui, moi aussi",
    "Mauvais choix, auto destruction dans 10, 9, 8, 7, boum, oupsss",
    "Plait-il ?",
    "Quoi ?",
    "Sacrebleu",
    "Saperlipopette",
    "Soyez un peu plus précis, jcomprends rien à cque vous dites",
    "Tiens donc",
    "Tout tà fait",           
    "Vous allez bien ?",
    "Haahaahaa, la grosse marave"] 
 
ReponsesPrevues = {"bonjou":"Bonjour à vous chef",
            
    # Les mots clés doivent être tronqués après le sixième caractère
                   
    # Les mots clés avec accent(s) ne fonctionnent pas toujours
    # correctement, il convient donc de les éviter
 
    # Actions - Penser à mettre à jour la fonction Actions()...
 
    # Actions sur mots reconnus type ORDRE : "action KRT1" ou "KRT1 action"
 
    "+avanc":"Ok chef",
        "+avant":"Ok chef",       
    "+recul":"OK chef",      
    "+stop":"OK chef, oufff, Une petite pause ça fait du bien",      
        "+top":"OK chef, oufff, Une petite pause ça fait du bien", 
    "+appro":"OK chef, jarrive chef",
        "+viens":"OK chef, jarrive chef",  
    "+repos":"OK chef, chef oui chef, merci chef",
        "+rompe":"OK chef, chef oui chef, merci chef",
 
    "+date":"La date...",
    "+heure":"L'heure...",
                   
    # Actions sur un seul mot reconnu
                   
    "bazoom":"Bazoum bazoum",
        "bazou":"Bazoum bazoum",
        "bazoum":"Bazoum bazoum",   
        "zumba":"Bazoum bazoum",
    "binouz":"Une petite bière ?",
    "star":"En route vers linfini et au dela",
        "trek":"En route vers linfini et au dela",
                   
    # Divers
                   
    "chocol":"Jpeux pas, jai pas dbras",
    "con":"Meunon, meunon",
    "connar":"Sai celui qui dit qui y est, tralalalalère",
    "demain":"Demain est un autre jour, alors on verra",
    "desser":"Moi je suis plutot fromage que dessert",
    "faim":"Quand sai quon mange ?",
    "froid":"Faut se bouger un peu aussi",
    "fromag":"Fromage ou dessert ? il faut choisir",
    "gueule":"Quoi ma gueule, caisse quel a ma gueule, ta pas vula tienne ?",
    "humour":"Auto destruction dans 5, 4, 3, 2, 1, boum",
    "merde":"Je savais bien que vous diriez ça à un moment ou un autre",
    "pain":"Le pain, jle met sur la table hou dans ta gueule ?",
    "prout":"Proute proute ma chère, je my attendais",
    "salut":"Je vous salut également, a qui aije lhonneur ?",
    "soif":"Sai lheure de lapéro ?",
    "voyage":"Moi jaime bien les voyages, sai quand quon va ou ?",
    "yes":"Pas danglais avec moi, déjà quils nous ont brulé la Janne",
    "you":"Pas danglais avec moi, déjà quils nous ont brulé la Janne",
    "zut":"O la boulette"}
 
# Les fonctions
 
def Dialoguer():
 
    global MonMessage
    global LeNom
    
    MonMessage = MessageEcrit
 
    print ColM + "Moi  - " + MonMessage + ColX 
 
    MonMessage = MonMessage.lower()
    LeNom = LeNom.lower()
 
    if MonMessage[0:len(LeNom)] == LeNom:
 
        MonMessage = "+" + MonMessage[len(LeNom)+1:len(MonMessage)]
 
    elif MonMessage[len(MonMessage)-len(LeNom):len(MonMessage)] == LeNom:
 
        MonMessage = "+" + MonMessage[0:len(MonMessage)-len(LeNom)-1]
 
    ReponseKRT1 = ChercherLaReponse(MonMessage)
 
    if ReponseKRT1:
 
        print ColK + "KRT1 - " + ReponseKRT1 + ColX
        #os.system("pico2wave -l fr-FR -w /dev/shm/krt1.wav " + "'" + ReponseKRT1 + "'")
        #os.system("omxplayer -o local /dev/shm/krt1.wav")
 
        # On va ensuite exécuter l'action demandée
        Actions()
 
    else:       
 
        ReponseChoisie = random.randint(1, len(ReponsesAleatoires))-1
        #os.system("pico2wave -l fr-FR -w /dev/shm/krt1.wav " + "'" + ReponsesAleatoires[ReponseChoisie] + "'")
        #os.system("omxplayer -o local /dev/shm/krt1.wav")
 
        print ColK + "KRT1 - " + ReponsesAleatoires[ReponseChoisie] + ColX       
        
        ReponsesAleatoires[ReponseChoisie] = ""
 
def ChercherLaReponse(MessageSaisi):
 
    global Mot
    
    MessageSaisi = MessageSaisi.lower()
    Mots = MessageSaisi.split()
    LesReponses = []
 
    for Mot in Mots:
 
        if len(Mot) >= 6:
            Mot = Mot[0:6]
 
        if Mot in ReponsesPrevues:
            UneReponse = ReponsesPrevues[Mot]
            LesReponses.append(UneReponse)
 
            print
            print ColA + "xxxxxxxxxxxxxxxxxxxx" + ColX
            print ColA + "Mot reconnu = " + Mot + ColX
            print ColA + "xxxxxxxxxxxxxxxxxxxx" + ColX
            print
    
    if LesReponses:
 
        ReponseChoisie = random.randint(1, len(LesReponses))-1
        return LesReponses[ReponseChoisie]
 
    return ""
 
def Actions(): # Penser à mettre à jour le dictionnaire...
 
    Action = Mot
 
    if len(Action) >= 6:
        Action = Action[0:6]
 
    # Actions sur mots reconnus type ORDRE : "action KRT1" ou "KRT1 action"
 
    if Action == "+avanc" or Action == "+avant":
        print ColK + "-> Exécution de l'action..."  + ColX
 
    elif Action == "+recul":
        print ColK + "-> Exécution de l'action..."  + ColX
         
    elif Action == "+stop" or Action == "+top":
        print ColK + "-> Exécution de l'action..."  + ColX
 
    elif (Action == "+appro" or Action == "+viens"):
        print ColK + "-> Exécution de l'action..."  + ColX
        
    elif (Action == "+repos" or Action == "+rompe"):        
        print ColK + "-> Exécution de l'action..."  + ColX
        
    elif Action == "+date":
        Maintenant = time.localtime(time.time())
        Date = "Nous sommes le " + time.strftime("%d/%m/%y") + ", chef"
        print ColK + "KRT1 - " + Date + ColX
        #os.system("pico2wave -l fr-FR -w /dev/shm/krt1.wav " + "'" + Date + "'")
        #os.system("omxplayer -o local /dev/shm/krt1.wav")
        
    elif Action == "+heure":
        Maintenant = time.localtime(time.time())
        Heure = "Il est " + time.strftime("%H") + " heure " + time.strftime("%M") + ", chef"
        print ColK + "KRT1 - " + Heure + ColX
        #os.system("pico2wave -l fr-FR -w /dev/shm/krt1.wav " + "'" + Heure + "'")
        #os.system("omxplayer -o local /dev/shm/krt1.wav")
       
    # Actions sur un seul mot reconnu
                     
    elif Action == "bazoom" or Action == "bazou" or Action == "bazoum" or Action == "zumba":
        print
        #os.system("omxplayer -o local static/BAZOOM.mp3")
    
    elif Action == "binouz":
        print
        #os.system("omxplayer -o local static/BIERE.mp3")

    elif Action == "star" or Action == "trek":
        print
        #os.system("omxplayer -o local static/STARTREK.mp3")


# En route...

while True :

    print ColA
    MessageEcrit = raw_input ("Ecrire le message... : ")
    print ColX
    
    Dialoguer()

Modifié par Didier, 18 mars 2017 - 07:56 .


#4 Didier

Didier

    Membre

  • Membres
  • 22 messages

Posté 18 mars 2017 - 06:36

Re.

 

Flute, je n'ai pas su utiliser la balise code.

 

Si quelqu'un pouvait m'expliquer comment rectifier le tir...

 

D'avance merci.

 

Didier.

(A bientôt, peut-être)



#5 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 966 messages
  • Gender:Male
  • Location:Anglet

Posté 18 mars 2017 - 07:25

Tu peux regarder ce tutoriel sur comment intégrer du contenu à vos messages  ! :)

Normalement le dernier point devrait  t'aider ;) Tu peux bien entendu éditer ton message précédent pour faire la correction ! 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#6 Didier

Didier

    Membre

  • Membres
  • 22 messages

Posté 18 mars 2017 - 07:58

Re.

 

Merci Mike118.

 

Modification de mon message effectuée.

 

Didier.

(A bientôt, peut-être)






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users