marquis34
Messages postés14Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention 9 mars 2014
-
Modifié par Whismeril le 8/03/2014 à 13:47
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
9 mars 2014 à 08:07
Bonjour
Me revoilà sur ce forum, je suis à la retraite depuis peu et je me remets à la création d'un chatterbot. J'ai beaucoup perdu durant toutes ces années sans programmer et je vous demande une grande indulgence.
je me lance dans la création d'un chatterbot et dès mes premières lignes ça bloque! Mais ou?
Je joins a ce msg le code en espérant une aide
Cordialement
Option Strict On
Public Class Form1
WithEvents txtChatInput As New TextBox
WithEvents btnSendInput As New Button
WithEvents txtOutput As New TextBox
Dim ChatItems As New List(Of ChatItem)
Dim CantAnswer As New List(Of String)
Dim CantRespond As New List(Of String)
Dim MonospacedFont As New Font("consolas", 12)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Width = 500
Me.Height = 500
txtChatInput.Size = New Size(New Point(191, 20))
txtChatInput.Location = New Point(13, 29)
btnSendInput.Size = New Size(New Point(75, 20))
btnSendInput.Location = New Point(210, 29)
btnSendInput.Text = "Envoyer"
txtOutput.Font = MonospacedFont
txtOutput.Left = 0
txtOutput.Multiline = True
txtOutput.WordWrap = False
txtOutput.ScrollBars = ScrollBars.Both
txtOutput.Top = txtChatInput.Top + txtChatInput.Height
txtOutput.Height = Me.ClientRectangle.Height - txtOutput.Top
txtOutput.Width = Me.ClientRectangle.Width
' txtOutput.Dock = DockStyle.Bottom
Me.Controls.Add(txtChatInput)
Me.Controls.Add(btnSendInput)
Me.Controls.Add(txtOutput)
Dim C1prompts As New List(Of String)
Dim C1Responses As New List(Of String)
C1prompts.Add("Bonjour")
C1prompts.Add("salut")
C1prompts.Add("coucou")
C1prompts.Add("Comment vas tu aujourd'hui?")
C1prompts.Add("Comment vas tu?")
C1prompts.Add("Tu vas bien?")
C1prompts.Add("Tout va bien?")
C1Responses.Add("Bonjour!")
C1Responses.Add("Enfin, te revoilà")
C1Responses.Add("Bonjour!")
C1Responses.Add("Je suis en grande forme! Merci de le demander!")
C1Responses.Add("Pas trop mal...")
C1Responses.Add("Je ne sais pas!")
Dim ChatItem1 As New ChatItem(C1prompts, C1Responses)
ChatItems.Add(ChatItem1)
Dim C2prompts As New List(Of String)
Dim C2Responses As New List(Of String)
C2prompts.Add("Oui")
C2Responses.Add("ça va bien...")
C2Responses.Add("c'est bien d'entendre ça...")
Dim ChatItem2 As New ChatItem(C2prompts, C2Responses)
ChatItems.Add(ChatItem2)
CantAnswer.Add("Je ne peux pas te répondre")
CantAnswer.Add("pourquoi demande tu cela...")
CantAnswer.Add("je ne sais pas!")
CantAnswer.Add("je ne suis pas une encyclopédie?")
CantAnswer.Add("parlons d'autre chose")
CantRespond.Add("c'est comme ça")
CantRespond.Add("je ne connais pas...")
CantRespond.Add("pourquoi me dis tu ça?")
CantRespond.Add("je suis stupéfaite...")
CantRespond.Add("es ce raisonnable?")
End Sub
Sub
Dim usernick As String = "Utilisateur" '<- User's nickname
chatbox.Items.Add(usernick & ": " & TextBox1.Text)
Dim botnickname As String = "Bot" '<- Chatbot's nickname
If LCase(TextBox1.Text) = ("hi") Or LCase(TextBox.Text) = ("Bienvenue") Then
chatbox.Items.Add(botnickname & ": Bonjour mon ami.")
ElseIf LCase(TextBox1.Text) = "Aurevoir" Then
chatbox.Items.Add(botnickname & ": A plus tard.")
End If
End Sub
Sub btnClick(ByVal sender As Object, ByVal e As EventArgs) Handles btnSendInput.Click
Randomize()
Dim Random As New Random
Dim Index As Integer
Dim Prompt As String = txtChatInput.Text
Dim PromptFound As Boolean = False
For Each ChatItem As ChatItem In ChatItems
If ChatItem.PromptFound(Prompt, False) Then
PromptFound = True
Select Case ChatItem.PromptCount < 3
Case True
Index = Random.Next(0, ChatItem.Responses.Count - 1)
txtOutput.Text = txtOutput.Text & vbCrLf & "Tu: " & Prompt & vbCrLf & "Odinateur: " & ChatItem.Responses(Index) & vbCrLf
ChatItem.PromptCount = ChatItem.PromptCount + 1
Case Else
Select Case ChatItem.PromptCount < 4
Case True
Select Case InStr(Prompt, "?") > 0
Case True
txtOutput.Text = txtOutput.Text & vbCrLf & "tu: " & Prompt & vbCrLf & "Odinateur: " & "tu m'as déjà demandé ça " & ChatItem.PromptCount & " fois... tu as la réponse..." & vbCrLf
Case Else
txtOutput.Text = txtOutput.Text & vbCrLf & "tu: " & Prompt & vbCrLf & "Odinateur: " & "tu as déjà dit ça " & ChatItem.PromptCount & " fois... je vais ignorer cette question..." & vbCrLf
End Select
ChatItem.PromptCount = ChatItem.PromptCount + 1
Exit For
Case Else
txtOutput.Text = txtOutput.Text & vbCrLf & "tu: " & Prompt & vbCrLf & "Odinateur: " & "des nouvelles..." & vbCrLf
ChatItem.PromptCount = ChatItem.PromptCount + 1
Exit For
End Select
End Select
Else
ChatItem.PromptCount = 0
End If
Next
If Not PromptFound Then
If Not InStr(Prompt, "?") > 0 Then
Index = Random.Next(0, CantRespond.Count - 1)
txtOutput.Text = txtOutput.Text & vbCrLf & "tu: " & Prompt & vbCrLf & "Odinateur: " & CantRespond(Index) & vbCrLf
Else
Index = Random.Next(0, CantAnswer.Count - 1)
txtOutput.Text = txtOutput.Text & vbCrLf & "tu: " & Prompt & vbCrLf & "Odinateur: " & CantAnswer(Index) & vbCrLf
End If
End If
End Sub
End Class
Class ChatItem
Public Prompts As New List(Of String)
Public Responses As List(Of String)
Public PromptCount As Integer
Sub New(ByVal Prompts As List(Of String), ByVal Responses As List(Of String))
Me.Prompts = Prompts
Me.Responses = Responses
Me.PromptCount = 0
End Sub
Function PromptFound(ByVal Prompt As String, ByVal CaseSensitive As Boolean) As Boolean
Select Case CaseSensitive
Case True
If Not Prompts.IndexOf(Prompt) = -1 Then Return True
Return False
Case Else
Dim Exists As Boolean = False
For Each S As String In Prompts
If LCase(S) = LCase(Prompt) Then
Exists = True
End If
Next
Return Exists
End Select
End Function
End Class
Whismeril
Messages postés18610Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention25 septembre 2023629 Modifié par Whismeril le 8/03/2014 à 13:47
Bonjour, merci de penser aux balises de coloration syntaxique voir ici .
Je modifie.
marquis34
Messages postés14Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention 9 mars 2014 8 mars 2014 à 16:25
merci de votre réponse mais j'ai tout revérifié et je ne sais pas ou ca bloque (donc je ne connais pas le bout de code à publier)
Merci de votre aide
a bientôt
marquis34
Messages postés14Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention 9 mars 2014 8 mars 2014 à 16:27
en fait je pense que l'erreur se trouve ici (mais ou?)
Sub
Dim usernick As String = "Utilisateur" '<- User's nickname
chatbox.Items.Add(usernick & ": " & TextBox1.Text)
Dim botnickname As String = "Bot" '<- Chatbot's nickname
If LCase(TextBox1.Text) = ("hi") Or LCase(TextBox.Text) = ("Bienvenue") Then
chatbox.Items.Add(botnickname & ": Bonjour mon ami.")
ElseIf LCase(TextBox1.Text) = "Aurevoir" Then
chatbox.Items.Add(botnickname & ": A plus tard.")
End If
End Sub
marquis34
Messages postés14Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention 9 mars 2014 9 mars 2014 à 05:46
votre aide a été d'un grand secours, je ne manquerais pas de vous tenir au courant de l'évolution de mon chatterbot. Problème résolu Cordialement
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 9 mars 2014 à 08:07
Bonjour,
Ce n'est pas ainsi que l'on marque un sujet en "résolu", mais en cliquant sur le bouton RESOLU au niveau de ton tout premier message.
Je le fais cette fois-ci à ta place