Share This
Связаться со мной
Крути в низ
Categories
//Чат-бот на Python (Deep Learning + TensorFlow). Часть IV: строим логику

Чат-бот на Python (Deep Learning + TensorFlow). Часть IV: строим логику

28.04.2021Category : Python

chat bot na python deep learning tensorflow chast iv stroim logiku f211e81 - Чат-бот на Python (Deep Learning + TensorFlow). Часть IV: строим логику

Предыдущая статья — Чат-бот на Python (Deep Learning + TensorFlow). Часть III: буферизация данных.

Добро пожаловать в четвертую часть серии статей про создание чат-бота при помощи алгоритмов глубокого обучения и библиотеки TensorFlow. До этого мы получили наши данные и научились их перебирать. Теперь мы готовы приступить к созданию реальной логики для создания входных данных.

Для начала мы наложим следующее ограничение: мы хотим иметь дело только с осмысленными комментариями. Для этого мы будем отбирать только те комментарии, за которые проголосовали минимум двое. На данный момент наш код имеет следующий вид:

import sqlite3 import json from datetime import datetime  timeframe = '2015-05' sql_transaction = []  connection = sqlite3.connect('{}.db'.format(timeframe)) c = connection.cursor()  def create_table():     c.execute("CREATE TABLE IF NOT EXISTS parent_reply(parent_id TEXT PRIMARY KEY, comment_id TEXT UNIQUE, parent TEXT, comment TEXT, subreddit TEXT, unix INT, score INT)")  def format_data(data):     data = data.replace('n',' newlinechar ').replace('r',' newlinechar ').replace('"',"'")     return data  def find_parent(pid):     try:         sql = "SELECT comment FROM parent_reply WHERE comment_id = '{}' LIMIT 1".format(pid)         c.execute(sql)         result = c.fetchone()         if result != None:             return result[0]         else: return False     except Exception as e:         #print(str(e))         return False   if __name__ == '__main__':     create_table()     row_counter = 0     paired_rows = 0      with open('J:/chatdata/reddit_data/{}/RC_{}'.format(timeframe.split('-')[0],timeframe), buffering=1000) as f:         for row in f:             row_counter += 1             row = json.loads(row)             parent_id = row['parent_id']             body = format_data(row['body'])             created_utc = row['created_utc']             score = row['score']             comment_id = row['name']             subreddit = row['subreddit']             parent_data = find_parent(parent_id)

chat bot na python deep learning tensorflow chast iv stroim logiku b7b9429 - Чат-бот на Python (Deep Learning + TensorFlow). Часть IV: строим логику

Хотите найти работу Junior Python Developer

Подписывайтесь на наш телеграм c вакансиями по Python

Подписаться ×

Теперь давайте потребуем, чтобы оценка была два или выше, а затем также посмотрим, есть ли уже ответ на родительский комментарий и какова его оценка:

if __name__ == '__main__':     create_table()     row_counter = 0     paired_rows = 0      with open('J:/chatdata/reddit_data/{}/RC_{}'.format(timeframe.split('-')[0],timeframe), buffering=1000) as f:         for row in f:             row_counter += 1             row = json.loads(row)             parent_id = row['parent_id']             body = format_data(row['body'])             created_utc = row['created_utc']             score = row['score']             comment_id = row['name']             subreddit = row['subreddit']             parent_data = find_parent(parent_id)             # maybe check for a child, if child, is our new score superior? If so, replace. If not...              if score >= 2:                 existing_comment_score = find_existing_score(parent_id)

Далее нам нужно создать функцию find_existing_score():

def find_existing_score(pid):     try:         sql = "SELECT score FROM parent_reply WHERE parent_id = '{}' LIMIT 1".format(pid)         c.execute(sql)         result = c.fetchone()         if result != None:             return result[0]         else: return False     except Exception as e:         #print(str(e))         return False

Если комментарий уже существует, и если оценка нового комментария выше, мы хотели бы заменить его на новый:

if score >= 2:       existing_comment_score = find_existing_score(parent_id)       if existing_comment_score:              if score > existing_comment_score:

Кроме того, многие комментарии могут удаляться. Также некоторые комментарии могут быть либо очень длинными, либо очень короткими. Мы хотим убедиться, что комментарии имеют приемлемую длину для обучения, а также проверить, что они не были удалены:

def acceptable(data):     if len(data.split(' ')) > 50 or len(data) < 1:         return False     elif len(data) > 1000:         return False     elif data == '[deleted]':         return False     elif data == '[removed]':         return False     else:         return True

Отлично, на данный момент мы уже готовы начать составлять базу данных, чем мы и займемся в следующей статье:

Чат-бот на Python (Deep Learning + TensorFlow). Часть V: построение базы данных.

chat bot na python deep learning tensorflow chast iv stroim logiku e9cff77 - Чат-бот на Python (Deep Learning + TensorFlow). Часть IV: строим логику

Больше материалов по машинному обучению

Подписывайтесь на нас в Телеграм

Подписаться ×

  • 8 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close