Un petit chaterbot en vb

Soyez le premier à donner votre avis sur cette source.

Vue 4 988 fois - Téléchargée 324 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
mercredi 30 avril 2003
Statut
Membre
Dernière intervention
10 juillet 2003

j'ai oublié de préciser, il faut créer un répertoire "Projet sam" sur le c: et mettre tous les fichiers de l'archive dedans.
si tu mets juste la base dedans ça devrait marcher aussi
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010

Il me fait une erreur : conn.Open (Provider cannot be found).
J'ai déjà changé le chemin ça ne fonctionne pas non plus.

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.

Du même auteur (cs_Cjulien)