音声通話は段階的に廃止され、通信セクターではテキストとビジュアルが採用されています。 Facebookの世論調査によると、購入者の半数以上が、話せる会社から購入することを好みます。 チャットは、社会的に受け入れられる新しいコミュニケーション手段になりました。
これにより、企業はいつでもどこからでもクライアントと通信できます。 チャットボットは、使いやすさと待ち時間の短縮により、企業や顧客の間でますます人気が高まっています。
チャットボット、または自動会話プログラムは、テキストベースのインターフェイスを介してサービスにアクセスするためのよりカスタマイズされた方法をクライアントに提供します。 最新のAIを利用したチャットボットは、特定の環境で人(または別のボット、開始)が行ったクエリ(質問、コマンド、注文など)を認識し、適切に応答します(回答、アクションなど)。
この投稿では、チャットボットとは何か、その利点、ユースケース、および独自のチャットボットを作成する方法について説明します。 深い学習 とりわけ、Pythonのチャットボット。
始めましょう。
では、チャットボットとは何ですか?
チャットボットは、ヒューマンマシンインタラクションの最も高度で有望な形式のXNUMXつと呼ばれることがよくあります。 これらのデジタルアシスタントは、人とサービスの間のやり取りを合理化することにより、顧客体験を向上させます。
同時に、顧客との連絡プロセスを効率化するための新しいオプションを企業に提供し、従来のサポート費用を削減できます。
一言で言えば、それは自然言語で人間と通信することを目的としたAIベースのソフトウェアです。 これらのチャットボットは、音声または書面による手法でやり取りすることが多く、人間のように人間とつながるために、人間の言語を簡単に模倣できます。
チャットボットはユーザーとのやり取りから学び、時間の経過とともにより現実的かつ効率的になります。 彼らは、支出の承認、オンラインでの消費者との関わり、リードの生成など、幅広いビジネス活動を処理できます。
Pythonを使用して独自のディープラーニングチャットボットを作成する
の分野には多くの異なる種類のチャットボットがあります 機械学習 とAI。 一部のチャットボットは仮想アシスタントですが、他のチャットボットは会話のためだけに存在し、他のチャットボットはカスタマーサービスエージェントです。
おそらく、企業が問い合わせに答えるために採用しているものを見たことがあるでしょう。 このチュートリアルでは、頻繁に要求されるクエリに答えるために小さなチャットボットを作成します。
1.パッケージのインストール
最初のステップは、次のパッケージをインストールすることです。
2.トレーニングデータ
次に、チャットボットに提供する必要のある情報の種類を把握します。 これは単純なチャットボットであるため、大きなデータセットをダウンロードする必要はありません。
自分たちで作成した情報のみを利用します。 レッスンを効果的に進めるには、以下に示すものと同じ形式の.JSONファイルを生成する必要があります。 私のファイルの名前は「intents.json」です。
JSONファイルは、ユーザーが入力して関連する回答のセットにマップする可能性のあるメッセージのセットを作成するために使用されます。 ファイル内の各辞書には、各メッセージが属するグループを識別するタグがあります。
この情報を使用して、 ニューラルネットワーク 単語のフレーズをファイル内のタグのXNUMXつとして分類します。
次に、それらのグループから応答を受け取り、それをユーザーに提供できます。 追加のタグ、返信、パターンを提供すると、チャットボットはより良く、より複雑になります。
3.JSONデータの読み込み
まず、.json データをロードし、いくつかのモジュールをインポートします。 .json ファイルを同じディレクトリでアセンブルします。 Pythonスクリプト。 .json データが data 変数に保存されます。
4.データ抽出
次に、JSONファイルから必要な情報を抽出します。 すべてのパターン、およびそれらが属するクラス/タグが必要です。
また、パターン内のすべての一意の用語のリストが必要になるため(後で説明する理由から)、これらの値を追跡するためにいくつかの空白のリストを作成しましょう。
次に、JSONデータをループして、必要な情報を取得します。 それらを文字列として使用するのではなく、nltk.wordトークナイザーを使用して、各パターンを単語のリストに変換します。
次に、docs_xリストで、各パターンを関連するタグとともにdocs_yリストに追加します。
5.単語のステミング
単語の語根を見つけることは、ステミングとして知られています。 たとえば、「thats」という単語の語幹は「that」である可能性がありますが、「happening」という単語の語幹は「happen」である可能性があります。
このステミング手法を使用して、モデルの語彙を減らし、一般的にどの文が意味するのかを理解しようとします。 このコードは、データ準備の次のフェーズで使用される語幹単語の一意のリストを生成するだけです。
6.言葉の袋
データをインポートし、語彙の語彙を生成したので、今度は単語の袋について話します。 ニューラルネットワーク 機械学習アルゴリズムは、ご存知のとおり、数値入力が必要です。 したがって、文字列リストはそれを削減しません。 文章の中で数字を表現するメカニズムが必要です。そこでは、単語の袋が入ります。
各フレーズは、モデルの語彙の用語数の長さのリストで表されます。 私たちの語彙の各単語は、リスト内の場所によって表されます。 リスト内の位置が1の場合、その単語はステートメントに表示されます。 0の場合、その単語は文に表示されません。
フレーズに単語が現れる順序がわからないため、これを単語の袋と呼びます。 私たちが知っているのは、それらがモデルの語彙に存在するということだけです。
入力を構造化することに加えて、ニューラルネットワークがそれを理解できるように出力をフォーマットする必要もあります。 単語の袋のように、データセット内のラベル/タグの数の長さである出力リストを作成します。 リスト内の各場所は一意のラベル/タグを表し、それらの場所のいずれかが1の場合は、どのラベル/タグが表示されているかを示します。
最後に、NumPy配列を使用して、トレーニングデータと出力を保存します。
7.モデル開発
すべてのデータを前処理したので、モデルの構築とトレーニングを開始する準備が整いました。 目的のために、XNUMXつの隠れ層を持つ非常に基本的なフィードフォワードニューラルネットワークを利用します。
私たちのネットワークの目的は、単語のコレクションを調べて、それらをクラス (JSON ファイルのタグの XNUMX つ) に割り当てることです。 まずはモデルのアーキテクチャを確立することから始めます。 より良いモデルを見つけるために、いくつかの数値を試してみることができることを覚えておいてください。 機械学習 ほとんどが試行錯誤に基づいています。
8.モデルのトレーニングと保存
設定が完了したので、データに基づいてモデルをトレーニングします。 これは、データをモデルに適合させることで実現します。 私たちが提供するエポックの数は、トレーニング中にモデルが同じデータにさらされる回数です。
トレーニングが終了したら、モデルをファイルモデルに保存できます。 tflearnは、他のスクリプトで使用できるスクリプトです。
9.チャットボットの使用
これで、ボットとのチャットを開始できます。
チャットボットの利点
- ボットは365年24日、XNUMX時間無料で動作することが期待されているため、可用性と反応速度が向上します。
- これらのボットは、ビッグデータのXNUMXつの主要なVであるボリューム、速度、多様性に取り組むための完璧なツールです。
- チャットボットは、企業の消費者について学び、理解するために使用できるソフトウェアです。
- 最高のメリットを享受した後、メンテナンスコストが安いという優れたパワーを備えています。
- チャットボットアプリケーションは、分析と予測のために保存および利用できるデータを作成します。
使用事例
- 顧客からの問い合わせの解決
- よくある質問への回答
- サポートチームへの顧客の割り当て
- 顧客からのフィードバックの収集
- 新しいオファーをお勧めします
- 会話型コマースで買い物
- ITヘルプデスク
- 宿泊施設の予約
- 送金
まとめ
チャットボットは、他のAIテクノロジーと同様に、人間のスキルを強化し、戦術的なタスクではなく戦略的なタスクにより多くの時間を費やせるようにすることで、人間をより創造的で想像力豊かにするために使用されます。
企業、従業員、および消費者は、AIが5Gテクノロジー。
これらおよびその他の可能性はまだ調査中ですが、インターネット接続、AI、NLP、および機械学習が進歩するにつれて、それらはより普及するでしょう。
チュー
こんにちは、
このプログラムをありがとう。
質問があります。
「bag_of_words」は定義されていません。 このエラーが理解できません。
このエラーを解決するにはどうすればよいか教えていただけますか??
この番組ありがとう!! 良い一日を過ごしてください
ジェイ
チャットボット セクションを使用する前に機能を追加してください。
////////////////////////////////////////////////// /////////////////////////////
def Bag_of_words(s, 単語):
バッグ = [0 for _ in range(len(words))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) for s_words 内の単語]
s_words の se の場合:
enumerate(words) の i、w の場合:
w == se の場合:
バッグ[i] = 1
numpy.array(bag) を返す
// 問題を確実に解決します。 ///
////////////////////////////////////////////////// //////////////////////////
完全なコードを共有しているので、全体像を明確に把握できます。
////////////////////////////////////////////////// /////////
nltkをインポートする
nltk.stem.lancaster import LancasterStemmer から
Stemmer = LancasterStemmer()
numpyをインポートする
tflearn をインポート
テンソルフローのインポート
ランダムにインポート
jsonをインポートする
ピクルスをインポート
open(“intents.json”) をファイルとして使用:
データ = json.load(ファイル)
試してみてください。
open(“data.pickle”, “rb”) を f:
単語、ラベル、トレーニング、出力 = pickle.load(f)
を除いて:
言葉=[]
ラベル = []
docs_x = []
docs_y = []
データの意図[「意図」]:
インテントのパターン[「パターン」]:
wrds = nltk.word_tokenize(パターン)
言葉.extend(wrds)
docs_x.append(wrds)
docs_y.append(インテント[“タグ”])
意図[「タグ」]がラベルにない場合:
labels.append(意図[「タグ」])
Words = [stemmer.stem(w. lower()) for w in Words if w != “?”]
単語 = 並べ替え (リスト (セット (単語)))
ラベル = ソート済み (ラベル)
トレーニング = []
出力 = []
out_empty = [範囲(len(labels))内の_の場合は0]
x の場合、enumerate(docs_x) 内のドキュメント:
バッグ = []
wrds = [ドキュメント内の w の stemmer.stem(w.lower())]
w の場合:
w の場合:
バッグ.append(1)
その他:
バッグ.append(0)
出力行 = 出力空[:]
出力行[ラベル.インデックス(docs_y[x])] = 1
training.append(バッグ)
出力.追加(出力_行)
トレーニング = numpy.array(トレーニング)
出力 = numpy.array(出力)
open(“data.pickle”, “wb”) を f:
pickle.dump((単語、ラベル、トレーニング、出力)、f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[なし, len(トレーニング[0])])
ネット = tflearn.fully_connected (ネット、8)
ネット = tflearn.fully_connected (ネット、8)
net = tflearn.fully_connected(net, len(output[0]), activation="softmax")
ネット = tflearn.regression(ネット)
モデル = tflearn.DNN(ネット)
試してみてください。
model.load(“モデル.tflearn”)
を除いて:
model.fit(トレーニング、出力、n_epoch=1500、batch_size=8、show_metric=True)
model.save(“モデル.tflearn”)
def Bag_of_words(s, 単語):
バッグ = [0 for _ in range(len(words))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) for s_words 内の単語]
s_words の se の場合:
enumerate(words) の i、w の場合:
w == se の場合:
バッグ[i] = 1
numpy.array(bag) を返す
デフォルトチャット():
print(“ボットとの会話を開始します (終了するには、quit と入力してください)!”)
Trueの場合:
inp = 入力(「あなた:」)
inp.lower() == 「終了」の場合:
破る
results = model.predict([bag_of_words(inp,words)])
results_index = numpy.argmax(結果)
タグ = ラベル[結果_インデックス]
data[“intents”] の tg の場合:
if tg['tag'] == タグ:
応答 = tg['応答']
print(random.choice(応答))
チャット()
////////////////////////////////////////////////// ///////////////
ありがとうございました、
ハッピーコーディング!
Lu
こんにちは、
pythonでチャットボットを作りたいのですが、エクセルでのアンケートで情報を得る場合の手順を教えてください。 ありがとう!