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つのニューラルネットワークを作成

ブログ    
ブログ    

推薦する

人工知能がヘルスケア業界にもたらす変化

AIヘルスケア企業のCEOが、医療におけるAIの応用、AIソリューションの購入方法、ヘルスケア分野に...

脅威検出システムにAIを統合するメリット

サイバー脅威は高度化、蔓延しているため、企業は常に警戒を怠ってはなりません。 2022年には、4億9...

スーパーコンピューターで設計された、カエルの細胞から作られた初の生きたロボット

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

AIが無人車両群を指揮、中国が世界最大の3Dプリント建物を建設

サウスチャイナ・モーニング・ポストとインサイダー誌が報じたところによると、中国はチベット高原のダム建...

ブロックチェーンとAI: 完璧な組み合わせ

ブロックチェーンと人工知能は、現在最もホットなテクノロジートレンドの 2 つです。これら 2 つの技...

...

人工知能教育とは何ですか?将来の教育の顕著な特徴は何でしょうか?

グローバル情報化教育の時代において、教育モデル、教育内容、学習方法は大きな変化を遂げており、人工知能...

ChatGPT は来週 6 つの主要なアップデートを予定しています。

公式発表では来週6つのメジャーアップデートが予定されているとのこと。早速見ていきましょう。写真1. ...

スーパー暗号解読:自動運転はこうして実現される

[[336217]]多くの新製品と同様に、自動運転に対する人々の態度は、過度の信頼から過少な信頼まで...

AI がデータセンターを持続可能性の原動力に変える方法

これまで多くの技術進歩の基盤となってきたデータセンターは、現在、インフラストラクチャ プロバイダーだ...

...

「ビッグアイクリップ」が生まれ変わり、ChatGPTチャットボットに変身

6 月 29 日のニュースによると、かつては物議を醸し、今では懐かしく思われている Microsof...

2015年9月のプログラミング言語ランキング: 新しいインデックスアルゴリズムにより急上昇が解消

9月に、TIOBE Indexは改良されたアルゴリズムを使用してプログラミング言語の人気度を計算しま...

工業情報化部:最近の汎用人工知能の発展により、計算能力に対する新たな、より高い要件が提示されている。

デジタル経済時代の新たな生産力として、コンピューティングパワーは質の高い経済社会の発展を支える重要な...