Рубрики
Без рубрики

Классификация намерений на основе извлечения в Чатботах 2/4

Поскольку мы обсудили теоретические вещи в первой части этого серии Chatbot, я думал, что теперь мы должны попробовать некоторые практические вещи. Так что в этой части, конечно, мы начнем с некоторого введения о намерении, а затем работать на набор данных.

Автор оригинала: Pankaj Kumar.

Ранее мы обсуждали Как работает Chatbots Отказ В этой части мы начнем с внедрения Chatbot на основе поискового классификации на основе поиска. Мы начинаем с понимания того, какое намерение и как работает классификация. В предстоящих учебных пособиях мы будем использовать намерение лучше ответить на запросы.

Итак, сначала давайте начнем с того, что такое намерение.

Что намерена в программировании?

намерение Является ли структура программирования в операционной системе, которая помогает пользователям организовать функции различных задач для выполнения миссии.

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

«Цель состоит в том, чтобы включить лампу, и сделать это, вы выполняете работу переворачивания переключателя на положение на.»

Шаги, чтобы создать простой чатбот

Набор данных и код можно найти на моем Github: https://github.com/arkaprabha-majumdar/simple-chatbot/

1. Подготовка набора данных

Во-первых, давайте расстегним папку набора данных и попадайте в нее. Кроме того, мы импортируем необходимые библиотеки, такие как Python Pandas здесь.

!unzip "/content/MachineLearningContest.zip"

%cd /content/drive/MyDrive/MachineLearningContest
import pandas as pd

2. Чтение входных данных

Входные данные в формате JSON, поэтому давайте прочитаем его и отобразить топ-5 записей, используя метод головки ():

intents_data = pd.read_json("intents.json")
intents_data.head()

2. Создание тестового набора данных

Затем мы также будем прочитать запросы данных тестирования, используя Pandas:

test_data = pd.read_excel("TestingData.xlsx")
test_data.head(10)

Как вы можете видеть во втором столбце, у нас есть словарь Python нескольких элементов различной длины:

5. Расщепление набора данных для лучшего классификации намерения

Поэтому нам нужно будет разделить клетки строк на несколько строк. Давайте создадим четыре списка:

id_rows = []
keys = []
values = []
intent = []

А затем запустить два для петлей, чтобы поставить все данные в соответствующие списки. Изучите цикл для объема каждой операции:

for row in range(intents_data.shape[0]):
  for key in intents_data['variations'][row].keys():
    id_rows.append(intents_data["id"][row])
    keys.append(key)
    values.append(intents_data['variations'][row][key])
    intent.append(intents_data['intent'][row])

Теперь мы готовы объединить его вместе в DataFrame:

df = pd.DataFrame({"id":id_rows,"query_key":keys,"query_val":values,"intent":intent})

Если мы просмотрим набор данных прямо сейчас, мы видим, что запросы разделены на несколько столбцов, имеющих общее значение «ID»:

df

6. Кодировка на этикетке

Теперь мы готовы работать над этим набором данных. Итак, первое, что мы сделаем, это кодировка этикетки.

Что такое метка кодировки?

В машинном обучении мы обычно имеем дело с наборами данных в виде терминов, которые содержат несколько меток (категорические данные).

Кодировка на этикетке относится к переводу символов в численную форму, чтобы преобразовать их в форму, которую можно прочитать компьютером.

Алгоритмы изучения машин затем урегулируют, как лучше проводить определенные оценки.

В надзоренном обучении это важный этап предварительной обработки для структурированного набора данных.

7. Кодирование намерения

Для этого мы используем Sklearn:

from sklearn import preprocessing 
label_encoder = preprocessing.LabelEncoder()

Затем мы поместим метку трансформированного столбца в DataFrame:

df["intent_num"] = label_encoder.fit_transform(df['intent'])

8. Форма для вектора TF-IDF

Как только намерение было закодировано, теперь нам нужно преобразовать тексты запроса в слово векторы.

В основном, основываясь на словаре N слов, мы кодируем каждое предложение, используя 1, где происходит слово, и 0, если оно не так.

В NLP важно преобразовывать текст в значимый вектор (или массив) чисел.

from sklearn.feature_extraction.text import TfidfVectorizer

Tfd = TfidfVectorizer(stop_words="english",max_df=0.7)
Tfd_train=Tfd.fit_transform(df['query_val'])

print(Tfd.get_feature_names())

Полный словарный запас, если вы любопытно, это:

['aadhaar', 'aadhar', 'able', 'aboout', 'ac', 'accident', 'account', 'activate', 'activated', 'active', 'activity', 'add', 'address', 'advantages', 'allincall', 'allowed', 'allows', 'alowed', 'amazing', 'amb', 'annual', 'answer', 'app', 'application', 'applied', 'apply', 'applying', 'appointment', 'approved', 'approver', 'asking', 'atm', 'auto', 'autopay', 'autosweep', 'avail', 'available', 'average', 'away', 'awesome', 'bad', 'balance', 'bank', 'banking', 'benefits', 'billers', 'billpay', 'bills', 'birth', 'block', 'blocked', 'bond', 'bonds', 'book', 'booking', 'bot', 'bound', 'branch', 'browser', 'bye', 'byee', 'byeee', 'byeeee', 'came', 'cancel', 'card', 'carry', 'case', 'cash', 'cd', 'change', 'charge', 'charged', 'charges', 'cheat', 'check', 'checkboook', 'checker', 'checking', 'cheque', 'chequebook', 'clarify', 'close', 'closed', 'cnr', 'code', 'collateral', 'collect', 'coming', 'communication', 'complete', 'completed', 'completing', 'compulsory', 'confused', 'connection', 'consent', 'consumer', 'contact', 'cost', 'create', 'credit', 'credited', 'crn', 'current', 'cvv', 'cya', 'date', 'days', 'deactivate', 'debit', 'debited', 'debiting', 'debt', 'deception', 'declaration', 'deduct', 'deducted', 'define', 'demand', 'demat', 'deposit', 'deposited', 'detailed', 'details', 'did', 'didn', 'didnt', 'difference', 'different', 'difficulty', 'digital', 'disable', 'district', 'documents', 'does', 'doing', 'don', 'dont', 'download', 'draft', 'dreamdifferent', 'dropped', 'dth', 'duplicity', 'duration', 'earlier', 'edge', 'elaborate', 'electricity', 'email', 'employee', 'entities', 'error', 'estatement', 'excellent', 'experience', 'explain', 'expoan', 'facility', 'fantastic', 'fatca', 'fd', 'features', 'fee', 'fees', 'fetaures', 'finance', 'fixed', 'fkyc', 'folio', 'foreclose', 'forgot', 'forgotten', 'frame', 'fraud', 'fraudulent', 'free', 'freeze', 'frozen', 'fund', 'funding', 'funds', 'gets', 'getting', 'given', 'going', 'gold', 'good', 'goodbye', 'got', 'group', 'guide', 'happened', 'haven', 'helful', 'hello', 'helloo', 'hellooo', 'help', 'helpful', 'hey', 'hi', 'hii', 'hiii', 'hiiii', 'history', 'hoax', 'home', 'horrible', 'id', 'ifsc', 'im', 'image', 'important', 'imps', 'imt', 'income', 'increase', 'india', 'information', 'initiate', 'installment', 'insurance', 'international', 'invest', 'investing', 'investment', 'investments', 'issues', 'joint', 'joke', 'journey', 'just', 'kidding', 'kind', 'kindly', 'know', 'kyc', 'larceny', 'legit', 'let', 'life', 'like', 'limit', 'limitations', 'limited', 'limits', 'link', 'list', 'lite', 'loan', 'loans', 'location', 'locked', 'login', 'long', 'lost', 'low', 'maintain', 'maintenance', 'make', 'maker', 'mandatory', 'marry', 'maturity', 'mb', 'mean', 'meaning', 'meant', 'medium', 'method', 'mf', 'middle', 'minimum', 'miserable', 'misplaced', 'mobile', 'money', 'monthly', 'mpin', 'mutual', 'nearest', 'necessary', 'necessay', 'necessity', 'need', 'needed', 'needs', 'neft', 'net', 'netflix', 'new', 'nice', 'nominee', 'normal', 'notice', 'number', 'numbers', 'offers', 'online', 'open', 'opened', 'opening', 'opt', 'optin', 'option', 'optout', 'outside', 'outstanding', 'oversees', 'package', 'paid', 'pan', 'passbook', 'password', 'pathetic', 'pay', 'payment', 'payments', 'pdc', 'pep', 'perfect', 'perform', 'performing', 'period', 'phone', 'physical', 'pin', 'pl', 'place', 'plan', 'poen', 'points', 'policy', 'possible', 'post', 'pre', 'premium', 'prepaid', 'prime', 'priority', 'problems', 'procedure', 'process', 'processing', 'proess', 'profile', 'proof', 'pros', 'protect', 'provide', 'provision', 'queries', 'query', 'rate', 'rates', 'ratio', 'rd', 'reach', 'receive', 'received', 'recent', 'recharge', 'recieve', 'recover', 'recurring', 'redeem', 'redeeming', 'reflect', 'related', 'replace', 'replacement', 'report', 'representative', 'request', 'require', 'required', 'requirement', 'reset', 'restart', 'restricted', 'robbed', 'saving', 'savings', 'saying', 'says', 'scam', 'score', 'secure', 'set', 'share', 'shop', 'sip', 'smart', 'solution', 'soon', 'sovereign', 'specify', 'start', 'statement', 'statements', 'status', 'steal', 'steps', 'stole', 'stolen', 'stop', 'suggest', 'summary', 'sweep', 'sweepin', 'switched', 'systematic', 'tada', 'taken', 'takes', 'tell', 'tellme', 'term', 'thank', 'theft', 'things', 'throught', 'time', 'today', 'track', 'transaction', 'transactions', 'transfer', 'type', 'unable', 'unblock', 'understand', 'unhelpful', 'update', 'upgrade', 'upi', 'urgent', 'use', 'user', 'using', 'vary', 'vdc', 'video', 'vidoeo', 'view', 'virtual', 'visa', 'visit', 'visited', 'vpa', 'want', 'waste', 'ways', 'wish', 'withdraw', 'withdrawal', 'wonderful', 'work', 'working', 'ya', 'yo']

Мы продолжим эту реализацию в следующей части: Классификация намерений на основе извлечения в Chatbots 3/4

Завершение примечания

Если вам понравилось прочитать эту статью и хочу прочитать больше, следуйте за мной в качестве автора. До тех пор, продолжай кодировать!