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

ブログ    
ブログ    

推薦する

OpenAI の共同創設者 Karpathy が記事「自動運転による AGI の解釈」を公開しました。元の投稿は削除されました。保存済み

「汎用人工知能」に関しては、OpenAIの科学者カルパシー氏が説明を行った。数日前、Karpathy...

国際翻訳コンテストで優勝したモデルがByteDanceによってオープンソース化された。

Transformer などの主流のテキスト生成アルゴリズムの単語単位の生成は、並列計算に適した ...

インテリジェントオートメーションが現代の職場に与える影響

インテリジェントオートメーションは現代の職場をさまざまな形で変えていますCOVID-19パンデミック...

仮想誘拐:人工知能がランサムウェア詐欺を助長

もしあなたの配偶者や子供があなたに泣きながら電話をかけてきて、誘拐されたと告げたら、あなたは冷静で慎...

...

AIも失業するだろう。スウェーデンの銀行はAIを解雇した

将来自分の仕事が人工知能に置き換えられるのではないかと心配していたら、このニュースはあなたにいくらか...

...

アンドリュー・ン氏のチームが2019年のAIトレンドを振り返る:自動運転は寒い冬を迎え、ディープフェイクはモンスターとなった

あと数日で2019年も終わりです。今年は AI が夢から現実へと移り変わる年です。NLP から自動運...

...

Google VideoPoet の責任者 Jiang Lu が TikTok に参入しました! AIビデオモデル戦争が迫る

OpenAIを去った技術の第一人者、カルパシー氏はついにオンラインで2時間のAI講座を開始した。 —...

生成 AI は現在の DevOps および SRE 作業システムをどのようにサポートしますか?

こんにちは、ルガです。今日は、人工知能エコシステムの中核技術である「生成型人工知能」を意味する GA...

人工知能のトレンドは将来的に急速な変化をもたらす

私たちはよく、「未来はどうなるのだろう?」と考えます。もっと正確に言えば、人類の未来はどのように発展...

人工知能、機械学習、ディープラーニングとは、いったい何なのでしょうか?

近年のホットな言葉といえば、「人工知能」が挙げられます。昨年のChatGPTの人気爆発により、「AI...

リアルタイムのテキストおよび画像処理の速度が 5 ~ 10 倍向上しました。Tsinghua LCM/LCM-LoRA は人気を博し、視聴回数は 100 万回を超えました。

テキストから作成された画像や写真から作成された画像は、新しいものではありません。しかし、これらのツー...