playing with nltk to make a chatbot
I had an old bit, from a project in class called 'rabbithole' that I used to have the computer return a made up sentence for a user in the game when they entered data that did not fit any of my if/elif clauses.
It was a bit of a mashup text based game.... Anyhoo, I decided I wanted to explore A.I. and someone I know suggested looking at 'ELIZA':
# someone made a javascript web version of her!
http://www.masswerk.at/elizabot/
I think the name at the bottom of that link is the author/writer, N. Landsteiner
wickipedia:
https://en.wikipedia.org/wiki/ELIZA
my little mess around with masswerk link:
Anyhoo, here's a bit of code where I'm trying to figure out how to use this nltk, and wordnet to process my nouns and verbs so I can return sentences to the user when mine can't find a scripted answer: (fyi: there is a bit of work to nltk, it's not just a simple import to get the wordnet and stuff that processes for it) (import into (nltk) python shell, and it'll tell you, like nltk.download('wordnet')) when it encounters something it needs to run.
pics of it in action:
the find_NN_VV() *top find_synonyms()*bottom
code:
#!usr/bin/python
# -*- coding: utf-8 -*-
from nltk.corpus import wordnet
from random import randint
import nltk as nltk
def run_synonyms():
search_for = input(">>>")
while search_for != 'QUIT':
alist = []
for syn in wordnet.synsets(search_for):
for l in syn.lemmas():
alist.append(l.name())
if len(alist) > 0:
length = len(alist) - 1
x = randint(0, length)
#print(x)
synx = alist[x]
print(f"possible matches = {length + 1}")
print(f"Are you looking for the word similar too : {synx} ?")
else:
print("word not found in wordnet")
search_for = input(">>>")
def find_NN_VV():
search_for = input("...>>>")
while search_for != 'EXIT':
nounlist = []
verblist = []
tokens = nltk.word_tokenize(search_for)
#print(tokens)
tags = nltk.pos_tag(tokens)
#print(tags)
for item in tags:
#print(item[1][0])
if item[1][0] == 'N':
nounlist.append(item[0])
if item[1][0] == 'V':
verblist.append(item[0])
print("nouns = ")
print(nounlist)
print("verbs = ")
print(verblist)
search_for = input("...>>>")
#find_NN_VV()
#run_synonyms()
It was a bit of a mashup text based game.... Anyhoo, I decided I wanted to explore A.I. and someone I know suggested looking at 'ELIZA':
# someone made a javascript web version of her!
http://www.masswerk.at/elizabot/
I think the name at the bottom of that link is the author/writer, N. Landsteiner
wickipedia:
https://en.wikipedia.org/wiki/ELIZA
my little mess around with masswerk link:
Anyhoo, here's a bit of code where I'm trying to figure out how to use this nltk, and wordnet to process my nouns and verbs so I can return sentences to the user when mine can't find a scripted answer: (fyi: there is a bit of work to nltk, it's not just a simple import to get the wordnet and stuff that processes for it) (import into (nltk) python shell, and it'll tell you, like nltk.download('wordnet')) when it encounters something it needs to run.
pics of it in action:
the find_NN_VV() *top find_synonyms()*bottom
code:
#!usr/bin/python
# -*- coding: utf-8 -*-
from nltk.corpus import wordnet
from random import randint
import nltk as nltk
def run_synonyms():
search_for = input(">>>")
while search_for != 'QUIT':
alist = []
for syn in wordnet.synsets(search_for):
for l in syn.lemmas():
alist.append(l.name())
if len(alist) > 0:
length = len(alist) - 1
x = randint(0, length)
#print(x)
synx = alist[x]
print(f"possible matches = {length + 1}")
print(f"Are you looking for the word similar too : {synx} ?")
else:
print("word not found in wordnet")
search_for = input(">>>")
def find_NN_VV():
search_for = input("...>>>")
while search_for != 'EXIT':
nounlist = []
verblist = []
tokens = nltk.word_tokenize(search_for)
#print(tokens)
tags = nltk.pos_tag(tokens)
#print(tags)
for item in tags:
#print(item[1][0])
if item[1][0] == 'N':
nounlist.append(item[0])
if item[1][0] == 'V':
verblist.append(item[0])
print("nouns = ")
print(nounlist)
print("verbs = ")
print(verblist)
search_for = input("...>>>")
#find_NN_VV()
#run_synonyms()
Comments
Post a Comment