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

ブログ    
ブログ    
ブログ    

推薦する

異常検出のためのいくつかのグラフ分割アルゴリズム

セキュリティ分野では、アカウント取引の異常や異なるイベント間の相関関係など、さまざまなシナリオで「グ...

SaaS アプリケーションで AI スノーボールはどのように大きくなるのでしょうか?

Shopify の不正防止機械学習から Salesforce の Einstein まで、過去数年...

人工知能とインテリジェント人工知能、AIの開発はデータサポートから切り離せない

AIは半世紀以上もの間、低調でしたが、囲碁の人工知能プログラム、AI茶室、AI+医療、AI+交通など...

...

Google AIが既知のタンパク質配列の10%を一度に注釈付け、10年で人間の研究成果を上回る

タンパク質は人体のすべての細胞と組織の重要な構成要素です。体のすべての重要な成分にはタンパク質が必要...

...

グラフィカルな説明 | RSAアルゴリズムとは

[[339878]]この記事はWeChatパブリックアカウント「Backend Technology...

人工知能が医療画像をどのように変えるか AI は医療画像の世界における第二の目となる

人工知能は多くの分野に影響を及ぼしています。しかし、いくつかの大きな変化が起こっており、その 1 つ...

...

Midjourneyに匹敵します!なぜミャオヤカメラは突然人気が出たのでしょうか?

編纂者:ユン・ジャオ、ワン・ルイピン、ノア「家族の写真がついに出てきました…」最近、ミャオヤカメラの...

...

RPAを成功させる方法

ロボティック プロセス オートメーション (RPA) は、ルールベースのプロセスを使用して、人間より...

...

Google は人工知能の分野で「堀」を持っていないのでしょうか?

少し前、匿名の人物が、Google 社内の研究者による研究メモを Discord プラットフォームに...