Easy way to implement Wikipedia chatbot with Python.

Bot for Wikipedia.


PAs you know chat bots are specially built software programs that interacts with internet users automatically. Bots can communicate with people from social media or simple websites. Python uses many libraries such as NLTK to implement Natural language Processing (NLP) function (can be considered as AI) which generates replies based on users input.

Wikipedia chatbot with Python.


An example below uses wikipedia library to seach an answer to users question with a selected topic - 'Woman'. So now you can find out everything about women you always wanted to know !!!



Simple Python Wikipedia chatbot:



import nltk
from nltk.stem import WordNetLemmatizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

import wikipedia

nltk.download('averaged_perceptron_tagger')
nltk.download('wordnet')
nltk.download('punkt')

text = wikipedia.page('Woman').content

lemmatizer = WordNetLemmatizer()

def lemma_me(sent):
    sentence_tokens = nltk.word_tokenize(sent.lower())
    pos_tags = nltk.pos_tag(sentence_tokens)

    sentence_lemmas = []
    for token, pos_tag in zip(sentence_tokens, pos_tags):
        if pos_tag[1][0].lower() in ['n', 'v', 'a', 'r']:
            lemma = lemmatizer.lemmatize(token, pos_tag[1][0].lower())
            sentence_lemmas.append(lemma)

    return sentence_lemmas

def process(text, question):
  sentence_tokens = nltk.sent_tokenize(text)
  sentence_tokens.append(question)

  tv = TfidfVectorizer(tokenizer=lemma_me)
  tf = tv.fit_transform(sentence_tokens)
  values = cosine_similarity(tf[-1], tf)
  index = values.argsort()[0][-2]
  values_flat = values.flatten()
  values_flat.sort()
  coeff = values_flat[-2]
  if coeff > 0.3:
    return sentence_tokens[index]


while True:
  question = input("Hi, what would you like to know about women ?\n")
  output = process(text, question)
  if output:
    print(output)
  elif question=='quit':
    break
  else:
    print("Have no idea )))")


OUT: Hi, what would you like to know about women ?
who are women ?
A woman is an adult female human.
Hi, what would you like to know about women ?
how many women in population ?
Out of the total human population in 2015, there were 101.8 men for every 100 women.
Hi, what would you like to know about women ?





See also related topics: