voici un petit chaterbot en vb qui utilise une base de données Acces pour calculer le nombre de mots correspondant à une réponse. Le résultat affiche la réponse avec le plus d'occurences correspondantes.
Source / Exemple :
Option Explicit
Private conn As ADODB.Connection
Private Sub Envoyer_Click()
Dim i, tri, j, piv, compri, rep, tableau(100, 2) As Integer 'piv: premier index vide
Dim mots As Variant
Dim texte, texte2 As String
'initialise le tableau
For i = 0 To 99
For j = 0 To 1
tableau(i, j) = 0
Next
Next
'traitement des caracteres speciaux de la chaine renvoyer par l'utilisateur
texte = Text1.Text
Text1.Text = ""
List1.AddItem texte
texte2 = LCase(texte)
texte2 = Replace(texte2, "?", " ")
texte2 = Replace(texte2, ".", " ")
texte2 = Replace(texte2, ",", " ")
texte2 = Replace(texte2, ";", " ")
texte2 = Replace(texte2, "é", "e")
texte2 = Replace(texte2, "ê", "e")
texte2 = Replace(texte2, "'", " ")
'decoupage de la chaine en mots
mots = Split(texte2)
compri = 0
Dim rs As New ADODB.Recordset
'boucle pour compter les occurrences correspondant aux reponses
For i = 0 To UBound(mots)
rep = 0
piv = 0
If mots(i) <> "" Then
rs.Open "SELECT DISTINCT * FROM mots where mot='" & mots(i) & "'", conn, adOpenDynamic, adLockBatchOptimistic
If Not rs.EOF Then
rs.MoveFirst
Do While Not rs.EOF
compri = 1
For j = 0 To 99
If tableau(j, 0) = rs.Fields.Item(3).Value Then
rep = j + 1
End If
Next
If rep = 0 Then
piv = 0
Do While tableau(piv, 0) <> 0
piv = piv + 1
Loop
tableau(piv, 0) = rs.Fields.Item(3).Value
tableau(piv, 1) = 1
Else
tableau(rep - 1, 1) = tableau(rep - 1, 1) + 1
End If
rs.MoveNext
Loop
End If
rs.Close
End If
Next
If compri = 0 Then
List1.AddItem "Sam: Je ne sais pas de quoi vous parler,Quelle autre sujet vous interesse"
Else
tri = 0
rep = 0
For i = 0 To 99
If tri < tableau(i, 1) Then
tri = tableau(i, 1)
rep = tableau(i, 0)
End If
Next
rs.Open "SELECT DISTINCT * FROM sam where id_reponse=" & CStr(rep), conn, adOpenDynamic, adLockBatchOptimistic
If Not rs.EOF Then
rs.MoveFirst
List1.AddItem "Sam: " & rs.Fields.Item(1).Value
End If
rs.Close
End If
Text1.SetFocus
End Sub
Private Sub Form_Load()
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & _
"C:\Projet sam\sam2.mdb"
conn.Open
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.