10 分でチャットボットを作成するにはどうすればよいでしょうか?

10 分でチャットボットを作成するにはどうすればよいでしょうか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discovery)から転載したものです。

[[390546]]

チャットボットの主な用途を理解することが重要です。すべての業界で同じチャットボットを使用することはできません。チャットボットにはそれぞれ異なる目的と異なるコーパスがあります。メッセージングコンポーネントは返信するのに便利ですが、応答には時間がかかる場合があります。一方、時間の問題を考慮すると、さまざまな他の方法を適用することができ、質問への回答に適したステートメントを取得するためのルールベースのシステムもいくつか見つかります。

旅行代理店に連絡して払い戻しを依頼したのに、適切な回答が得られなかったことが何回ありますか。

それでは、簡単なチャットボットを作ってみましょう。次のパッケージをインストールします。

  1. pip インストール nltk
  2. pip インストール newspaper3k

パッケージ newspaper3k には次の利点があります。

  • マルチスレッド記事ダウンロードフレームワーク
  • 識別可能なニュース URL
  • HTMLからテキストを抽出できる
  • HTMLからトップレベルの画像を抽出する
  • HTMLからすべての画像を抽出する
  • テキストからキーワードを抽出する
  • テキストから要約を抽出する
  • 著者はテキストから抽出できる
  • Google トレンド用語抽出
  • 10以上の言語を使用(英語、ドイツ語、アラビア語、中国語など)

次のようにライブラリをインポートします。

  1. #ライブラリをインポートする
  2. 新聞輸入記事より
  3. ランダムにインポート
  4. nltk をインポートする
  5. インポート文字列
  6. sklearn.feature_extraction.textからCountVectorizer をインポートします
  7. sklearn.metrics.pairwiseからcosine_similarity をインポートします

コサイン類似度またはコサインカーネルは、X と Y の正規化されたドット積として類似度を計算します。

  1. sklearn.metrics.pairwise.cosine_similarity(X、Y =なし、dense_output = True )

パラメータ

形状が (n_samples_X, n_features) の X{ndarray, スパース行列} の入力データ。

形状 (n_samples_Y、n_features) の Y{ndarray、スパース行列}、デフォルト = None 入力データ。

None の場合、出力は X 内のすべてのサンプル間のペアワイズ類似度になります。dense_output bool、デフォルト = True 入力がスパースであっても密な出力を返すかどうか。 False の場合、両方の入力配列がスパースであれば、出力もスパースになります。

戻る

カーネル行列: 形状 (n_samples_X、n_samples_Y) の ndarray

  1. numpyをnpとしてインポートする
  2. 輸入警告
  3. 警告をフィルターする( '無視' )

以下はヘルスケアウェブサイトからのデータです:

  1. 記事 = 記事 ( "https://www.mayoclinic.org/diseases-conditions/chronic-kidney-disease/symptoms-causes/syc-20354521" )
  2. 記事.ダウンロード()
  3. 記事を解析する()
  4. 記事.nlp()
  5. コーパス=記事.テキスト
  6. 印刷(コーパス)
  7.  
  8.  
  9. #トークン化
  10. テキスト=コーパス
  11. sentence_list = nltk.sent_tokenize(text) #リスト
  12.  
  13.  
  14. #リストを印刷する
  15. print(文リスト)

コーパスの準備ができたら、ユーザーや顧客がコンテンツとは関係のない質問をしたり言ったりする可能性がある質問について考える必要があります。挨拶やお礼、あるいは「さようなら」のようなメッセージでも構いません。チームはこの情報とその反応について考える必要があります。

挨拶ボットの応答:

  1. #挨拶に対するランダムな応答
  2. def greeting_response(テキスト):
  3. テキスト =テキスト.lower ()
  4.  
  5.  
  6. #ボットの挨拶
  7. bot_greetings = [ 「こんにちは」 「やあ」 「こんにちは」 「やあ」 「こんにちは」 ]
  8.  
  9.  
  10. #ユーザーへの挨拶
  11. user_greetings = [ "wassup" "howdy" "hi" "hola" "hey" "hello" ]
  12. text.split()内の単語の場合:
  13. user_greetings内の単語の場合:
  14. ランダムな選択肢を返す(bot_greetings)
  15. #挨拶に対するランダムな応答
  16. def grateful_response(テキスト):
  17. テキスト =テキスト.lower ()

応答してくれたロボットに感謝します:

  1. #ボットの感謝
  2. bot_gratitude=[ 「お役に立てて嬉しいです」 「どういたしまして」 「お役に立てて光栄です」 ]
  3.  
  4.  
  5. #ユーザーへの感謝
  6. user_gratitude=[ "本当にありがとう" , "感謝している" , "ありがとう" , "ありがとう" , "ありがとう" ]
  7.  
  8.  
  9. text.split()内の単語の場合:
  10. user_gratitude内の単語の場合:
  11. ランダムな選択を返す(bot_gratitude)

カテゴリリスト:

  1. #デフォルトのタイトルテキスト
  2. def index_sort(list_var):
  3. 長さ = len(list_var)
  4. list_index = リスト(範囲(0,長さ))
  5. x=リスト変数
  6. i が範囲(長さ)内にある場合:
  7. jが範囲(長さ)の場合:
  8. x[リストインデックス[i]]>x[リストインデックス[j]]の場合:
  9. #スワップ
  10. temp =リストインデックス[i]
  11. リストインデックス[i]=リストインデックス[j]
  12. list_index[j] =一時 
  13.  
  14.  
  15. リストインデックスを返す

チャットボットの応答機能は、事前定義されたテキストのコサイン類似度に基づく応答から生成されます。

  1. #ボット作成レスポンス
  2. bot_response(ユーザー入力)を定義します。
  3. ユーザー入力 =ユーザー入力.lower ()
  4. sentence_list.append(ユーザー入力)
  5. bot_response= ""  
  6. cm = CountVectorizer().fit_transform(文リスト)
  7. 類似度スコア=コサイン類似度(cm[-1],cm)
  8. 類似度スコアリスト = 類似度スコア.flatten()
  9. インデックス= index_sort(類似度スコアリスト)
  10. インデックス=インデックス[1:]
  11. レスポンスフラグ=0
  12. 0 = 0 です。
  13. iが範囲(len(インデックス))内にある場合:
  14. ifsimilarity_scores_list[インデックス[i]]>0.0:
  15. bot_response=bot_response+ '' +sentence_list[インデックス[i]]
  16. レスポンスフラグ=1
  17. j=j+1
  18. j>2の場合:
  19. 壊す
  20.  
  21.  
  22. response_flag==0の場合:
  23. bot_response=bot_response+ "" + "申し訳ありませんが、理解できません"  
  24.  
  25.  
  26. sentence_list.remove(ユーザー入力)
  27.  
  28.  
  29. bot_responseを返す

終了チャットの場合、終了リスト内の単語は「終了」、「さようなら」、「さようなら」、「終了」と書き込まれます。

これらの言葉に応答して、チャットボットはチャットを終了します。

チャットボットを起動してお楽しみください!

  1. #チャットを開始
  2. print( "Doc Bot: 私は DOc Bot です。慢性腎臓病に関するご質問にお答えします。終了したい場合は、タイプして、さようなら" )
  3.  
  4.  
  5. exit_list=[ '終了' 'さようなら' 'また後で' '終了' ]
  6.  
  7.  
  8. while():
  9. ユーザー入力 = 入力()
  10. exit_list内のuser_input.lower ()の場合:
  11. print( "Doc Bot: さようなら、また後で" )
  12. 壊す
  13. elif greeting_response(user_input)!=なし:
  14. print( "Doc Bot: " + greeting_response(user_input))
  15. elif grateful_response(user_input)!=なし:
  16. print( "Doc Bot: " +gratitude_response(user_input))
  17. それ以外
  18. print( "Doc Bot: " +bot_response(user_input))

チャットボットの応答は以下をご覧ください。

「ありがとう」はロボットの感謝プログラムに含まれていないので、そのメッセージを伝えます。時間の経過とともに、そのような語彙を拡張したり、正規表現を使用して微調整したりすることができます。

小さな例を挙げると、チャットボットとのチャットの開始は迅速かつ簡単である必要があります。チャットボットはさまざまな業界に合わせて微調整する必要があり、これらの業界のコーパスはリアルタイム データまたはクラウド内のストレージから取得されます。

また、旅行代理店でのチケット予約など、チャットでは最新のデータに基づいて応答する必要があるため、リアルタイムのデータには課題があることに注意することが重要です。

<<:  高所から物が投げ出される悲劇が多発。AI監視システム「私があなたを守ります」

>>:  Facebookは色を表現するために通信する2つのニューラルネットワークを作成

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

...

CNNを称賛するのはやめろ。類似点と相違点さえ区別できない

[[416629]]セサミストリートには「One of These Things Is Not Li...

人気のSoraはDiTを最前線に押し上げ、GitHubのホットリストにも載りました。新しいバージョンのSiTに進化しました。

リリースされてから1週間近く経ちますが、OpenAIの動画生成モデルSoraの衝撃はまだまだ続きます...

この履歴書はAIの助けを借りて作成されたことが判明しました。 !

秋の就職活動は静かに過ぎ去りましたが、信頼できるインターンシップ先を見つけたい大学生にとって、すべて...

AIとデータサイエンスの未来を形作る主要なトレンド

データ中心の機能と対象顧客への理解を備えた人工知能とデータサイエンスが世界を席巻しています。企業は、...

機械学習の博士号を取得するためにゼロから 12 年間勉強する価値はあるでしょうか?

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

UniPAD: 自動運転のためのユニバーサル事前トレーニングパラダイムが登場!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

大学入試特集:AI出願ガイド

大学入試はすでに始まっています。分厚いノートを開いて専攻を選ぶ日はまだまだ遠いのでしょうか。この季節...

プログラマーが面接でアルゴリズムについて素早く準備する方法

序文短い記事を書こうと決めたので、これがそれです。私がこの記事を書こうと思った理由は、Weibo 上...

...

AI分野におけるNVIDIA NeMoフレームワークの包括的な応用と利点の概要

1. NeMoフレームワークの紹介NVIDIA NeMo は、PyTorch と PyTorch L...

...