AI : chatbot : dr eliza

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

AI : chatbot : dr eliza

Berichtdoor bluatigro » ma feb 16, 2015 3:41 pm

dit is gebasseerd op een programma uit de '60

de vorige versie liep nog vast deze niet

t werkt nu ook als er geen sleutel is gevonden
error :
- het bezit word echter nog niet gebruikt
- als er geen sleutel is
Code: Selecteer alles
'dit is een demonstratie van taalhekenning
'bluatigro 16 feb 2015
DIM a$( 20 ) , b$( 20 ) , zin$( 50 , 3 )
global text$
CLS
call cleartxt
call txt "Blua Tigro"
call newline
call txt "presenteert :"
call newline
call txt "Dr. Blua Tigro ."
call newline
call txt "A.I. simulatie van n psychiater ."
call newline
call txt "[ zinnen zonder leetekens aub ]"
print text$
input "[ press return ]" ; in$
call cleartxt
maxwoord = 1
WHILE a$( maxwoord - 1 ) <> "="
'spiegeldata inlezen
  READ a$ , b$
  a$( maxwoord ) = a$
  b$( maxwoord ) = b$
  maxwoord = maxwoord + 1
WEND
maxzin = 1
WHILE zin$( maxzin - 1 , 0 ) <> "="
'sleutels en reactie zinnen inlezen
  FOR t = 0 TO 3
    READ z$
    zin$( maxzin , t ) = z$
  NEXT t
  maxzin = maxzin + 1
WEND
zin$ = "qq"
call txt "Dokter Blua Tigro is aanwezig ."
while zin$ <> ""
  zin$ = " "
  print text$
  input zin$
  call cleartxt
  z$ = zin$
  a = 0
  zin$ = Lower$( zin$ + " " )
  FOR t = 1 TO maxzin - 1 'alle sleutels langslopen
    IF INSTR( zin$ , zin$( t , 0 ) ) <> 0 THEN
    'sleutel gevonden ?
      antwoord$ = zin$( t , INT( RND * 2.99 + 1 ) )
      a = t
    END IF
  NEXT t
  IF a = 0 THEN
  'geen sleutel gevonden ?
    IF mijn$ = "" THEN
    'geen vorig bezit ?
      t = 1
      while word$( zin$ , t ) <> ""
        t = t + 1
      wend
      IF word$( zin$ , t - 1 ) = "mijn" THEN
      'bezit in zin ?
        mijn$ = word$( zin$ , t ) 'sla bezit op
      END IF
      dice = int( rnd(0) * 6 )
      SELECT CASE dice
      'reageer als niets is gevonden
        CASE 0
          call txt "Kunt u daar meer over vertellen ?"
        CASE 1
          call txt "Dat is zeer interesant ."
        CASE 2
          call txt "Gaat u daar eens over door ."
        CASE 3
          call txt "Dat komt vaker voor ."
        case 4
          call txt "Hoe voeld dat ?"
        case 5
          call txt "Hoe voelt u zich ?"
      END SELECT
      ELSE
      'reageer op laatste bezit en vergeet bezit
        call txt "Kunt u meer over uw "; mijn$ ; " vertelen ?"
        mijn$ = ""
      END IF
    else
      IF RIGHT$( antwoord$ , 1 ) = "=" THEN
        'reactiezin heeft aanhangsel
        antwoord$ = LEFT$( antwoord$ , LEN( antwoord$ ) - 1 )
        'verwijder sleutel van zin
        zin$ = RIGHT$( zin$ , LEN( zin$ ) - LEN( zin$( a , 0 ) ) )
        call txt antwoord$
        'plak spiegel worden achter reactiezin
        'te gebruiken voor vertaler
      t = 1
      while word$( zin$ , t ) <> ""
        'alle woorden uit zin
        qq = 0
        FOR e = 0 TO maxwoord
          IF word$( zin$ , t ) = a$( e ) THEN
            'is woord een spiegelwoord ?
            call txt b$( e ) + " "
            qq = 1
          END IF
        NEXT e
        IF qq = 0 THEN
          call txt word$( zin$ , t ) + " "
        end if
        t = t + 1
      wend
      call txt "?"
    ELSE
      call txt antwoord$
    END IF
  end if
wend
print "tot ziens ."
END
sub txt t$
  text$ = text$ + t$
end sub
sub newline
  call txt chr$( 13 )
end sub
sub cleartxt
  text$ = ""
end sub
'                                  spiegel-data

'het is zeer warschijnlijk
'dat ik hier wat vergeten ben
'aub uitbreiden .

DATA "ik","u","u","ik","jij","ik"
DATA "mijn","uw","uw","mijn","jouw","mijn"
DATA "ben","bent","bent","ben"
DATA "heb","heeft","heeft","heb"
DATA "ga","gaat" ,"gaat","ga"
DATA "=","="

'                           sleutel en zinnen data

'dit is het interesantste gedeelte
'en voor uitbreidig en verbetering vatbaar
'een sleutel bestaat uit een of meer woorden
'en heeft 3 reactie zinnen .
'als je de reactie zin met = laat eindigen
'plakt het progamma het
'gespiegelde gedeelte erachter
'dan moet de sleutel wel in t begin
'van de zin staan

DATA "?"
DATA "Waarom vraagt u dat ?"
DATA "Weet u dat niet ?"
DATA "Wat denkt u zelf ?"

data "ja"
data "Dat is positief ."
data "Bent u altijd zo positief ?"
data "Bent u wel eens negatief ?"

data "nee"
data "Dat is negatief ."
data "Bent u altijd zo negatief ?"
data "Bent u wel eens positief ?"

DATA "natuurlijk"
DATA "Bent u altijd zo zeker ?"
DATA "Weet u dat zeker ?"
DATA "U bent er wel zeker van ?"

DATA "computers"
DATA "Bedoelt u mij daar ook mee ?"
DATA "Heeft u dat vaker met computers ?"
DATA "Slaat dat ook op mij ?"

DATA "ik heb"
DATA "Waarom heeft u ="
DATA "Hoelang heeft u al ="
DATA "Heeft u vaker ="

DATA "ik ben"
DATA "Bent u vaak ="
DATA "Waarom bent u ="
DATA "Hoelang bent u al ="

DATA "ik wou dat"
DATA "Maakt het veel uit als ="
DATA "Waarom wilt u dat ="
DATA "Wilt u vaak dat ="

DATA "ik denk dat"
DATA "Twijvelt u er aan dat ="
DATA "Denkt u vaak dat ="
DATA "Waarom denkt u dat ="

DATA "ik wil"
DATA "Waarom wilt u ="
DATA "Wilt u vaak ="
DATA "Hoelang wilt u ="

DATA "ik vind dat"
DATA "Vindt u vaak ="
DATA "Hoelang vindt u ="
DATA "Waarom vindt u ="

DATA "ik haat"
DATA "Haat u vaker ="
DATA "Waarom haat u ="
DATA "Waneer haat u ="

DATA "ik hou van"
DATA "Houdt u veel van ="
DATA "Waarom houdt u van ="
DATA "Houdt u vaker van ="

DATA "=","=","=","="
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm

Re: AI : chatbot : dr eliza

Berichtdoor bluatigro » di feb 17, 2015 10:30 am

update :
- ik denk dat ik nu alle errors heb gefixt
Code: Selecteer alles
'dit is een demonstratie van taalhekenning
'bluatigro 17 feb 2015
DIM a$( 20 ) , b$( 20 ) , zin$( 50 , 3 )
global mijn$
CLS
print "Blua Tigro"
print "presenteert :"
print "Dr. Blua Tigro ."
print "A.I. simulatie van n psychiater ."
print "[ zinnen zonder leetekens aub ]"
maxwoord = 1
WHILE a$( maxwoord - 1 ) <> "="
'spiegeldata inlezen
  READ a$ , b$
  a$( maxwoord ) = a$
  b$( maxwoord ) = b$
  maxwoord = maxwoord + 1
WEND
maxzin = 1
WHILE zin$( maxzin - 1 , 0 ) <> "="
'sleutels en reactie zinnen inlezen
  FOR t = 0 TO 3
    READ z$
    zin$( maxzin , t ) = z$
  NEXT t
  maxzin = maxzin + 1
WEND
zin$ = "qq"
print "Dokter Blua Tigro is aanwezig ."
while zin$ <> ""
  zin$ = " "
  input zin$
  call cleartxt
  z$ = zin$
  a = 0
  zin$ = Lower$( zin$ + " " )
  FOR t = 1 TO maxzin - 1 'alle sleutels langslopen
    IF INSTR( zin$ , zin$( t , 0 ) ) <> 0 THEN
    'sleutel gevonden ?
      antwoord$ = zin$( t , INT( RND( 0 ) * 2.99 + 1 ) )
      a = t
    END IF
  NEXT t
  IF a = 0 THEN
  'geen sleutel gevonden ?
    IF mijn$ = "" THEN
    'geen vorig bezit ?
      dice = int( rnd(0) * 6 )
      SELECT CASE dice
      'reageer als niets is gevonden
        CASE 0
          print "Kunt u daar meer over vertellen ?"
        CASE 1
          print "Dat is zeer interesant ."
        CASE 2
          print "Gaat u daar eens over door ."
        CASE 3
          print "Dat komt vaker voor ."
        case 4
          print "Hoe voelt dat ?"
        case 5
          print "Hoe voelt u zich ?"
      END SELECT
      ELSE
      'reageer op laatste bezit en vergeet bezit
        print "Eerder had u het over uw " ; mijn$ ; " ."
        print "Kunt u meer over uw "; mijn$ ; " vertelen ?"
        mijn$ = ""
      END IF
    else
      IF RIGHT$( antwoord$ , 1 ) = "=" THEN
        'reactiezin heeft aanhangsel
        antwoord$ = LEFT$( antwoord$ , LEN( antwoord$ ) - 1 )
        'verwijder sleutel van zin
        zin$ = RIGHT$( zin$ , LEN( zin$ ) - LEN( zin$( a , 0 ) ) )
        print antwoord$ ;
        'plak spiegel worden achter reactiezin
        'te gebruiken voor vertaler
      t = 1
      while word$( zin$ , t ) <> ""
        'alle woorden uit zin
        qq = 0
        FOR e = 0 TO maxwoord
          IF word$( zin$ , t ) = a$( e ) THEN
            'is woord een spiegelwoord ?
            print b$( e ) + " " ;
            qq = 1
          END IF
        NEXT e
        IF qq = 0 THEN
          print word$( zin$ , t ) + " " ;
        end if
        t = t + 1
      wend
      print "?"
    ELSE
      print antwoord$
    END IF
  end if
  t = 1
  while word$( zin$ , t ) <> ""
    t = t + 1
  wend
  IF word$( zin$ , t - 1 ) = "mijn" THEN
    'bezit in zin ?
    mijn$ = word$( zin$ , t ) 'sla bezit op
  END IF
wend
print "tot ziens ."
end
'                                  spiegel-data

'het is zeer warschijnlijk
'dat ik hier wat vergeten ben
'aub uitbreiden .

DATA "ik","u","u","ik","jij","ik"
DATA "mijn","uw","uw","mijn","jouw","mijn"
DATA "ben","bent","bent","ben"
DATA "heb","heeft","heeft","heb"
DATA "ga","gaat" ,"gaat","ga"
DATA "=","="

'                           sleutel en zinnen data

'dit is het interesantste gedeelte
'en voor uitbreidig en verbetering vatbaar
'een sleutel bestaat uit een of meer woorden
'en heeft 3 reactie zinnen .
'als je de reactie zin met = laat eindigen
'plakt het progamma het
'gespiegelde gedeelte erachter
'dan moet de sleutel wel in t begin
'van de zin staan

DATA "?"
DATA "Waarom vraagt u dat ?"
DATA "Weet u dat niet ?"
DATA "Wat denkt u zelf ?"

data "ja"
data "Dat is positief ."
data "Bent u altijd zo positief ?"
data "Bent u wel eens negatief ?"

data "nee"
data "Dat is negatief ."
data "Bent u altijd zo negatief ?"
data "Bent u wel eens positief ?"

DATA "natuurlijk"
DATA "Bent u altijd zo zeker ?"
DATA "Weet u dat zeker ?"
DATA "U bent er wel zeker van ?"

DATA "computers"
DATA "Bedoelt u mij daar ook mee ?"
DATA "Heeft u dat vaker met computers ?"
DATA "Slaat dat ook op mij ?"

DATA "ik heb"
DATA "Waarom heeft u ="
DATA "Hoelang heeft u al ="
DATA "Heeft u vaker ="

DATA "ik ben"
DATA "Bent u vaak ="
DATA "Waarom bent u ="
DATA "Hoelang bent u al ="

DATA "ik wou dat"
DATA "Maakt het veel uit als ="
DATA "Waarom wilt u dat ="
DATA "Wilt u vaak dat ="

DATA "ik denk dat"
DATA "Twijvelt u er aan dat ="
DATA "Denkt u vaak dat ="
DATA "Waarom denkt u dat ="

DATA "ik wil"
DATA "Waarom wilt u ="
DATA "Wilt u vaak ="
DATA "Hoelang wilt u ="

DATA "ik vind dat"
DATA "Vindt u vaak ="
DATA "Hoelang vindt u ="
DATA "Waarom vindt u ="

DATA "ik haat"
DATA "Haat u vaker ="
DATA "Waarom haat u ="
DATA "Waneer haat u ="

DATA "ik hou van"
DATA "Houdt u veel van ="
DATA "Waarom houdt u van ="
DATA "Houdt u vaker van ="

DATA "=","=","=","="
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm


Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron