たとえば、顧客からのよくある質問への回答を整理します。 コールセンターを介してこれを行うには、従業員を雇ってWebサイトまたはソーシャルネットワーク上のウィジェットを作成するだけです。 緊急のタスクは、プロセスを最適化して、エラーが最小限に抑えられ、便利なユーザーインターフェイスで自動的に実行されるようにすることです。 たとえば、「Yandex」の音声アシスタント「Alice」。
この記事では、自然言語処理を使用してFAQに回答する問題を効果的に解決する方法と、ソリューションをAliceに統合する方法について説明します。
テキストの分類とその方法
DeepPavlovライブラリに基づいた質疑応答スキルの作成
DeepPavlovライブラリをインストールする
アリスでスキルを起動する
おわりに
テキストの分類とその方法
「質問と回答」のペアの用意されたセットから特定の質問に近い質問を検索する問題は、セマンティック近接/テキスト分類を決定するアルゴリズムによって解決されます。
この問題を「生産中」に解決するには、2つの方法があります。州のNLPスペシャリストを雇うか、ソリューションを外部委託するかです。
両方のオプションの短所:1)データ収集の必要性、2)モデルのトレーニングと品質測定の無限の反復、3)開発者の資格に対する深刻な要件。 既製の言語処理ソリューションの統合プロセスでさえ、最初から作成することは言うまでもなく、簡単な作業ではありません。 外部クラウドソリューション(Google AssistantまたはMicrosoft Cortana)は、テキスト分類(DialogFlow、Azure Bot Service)の問題に対する包括的なソリューションを提供しますが、スケーリング、有料APIサービスへのリンク、ロシア語のサポートにはまだ問題があります。
ただし、代替手段があります。ソリューションの作成を大幅に簡素化するオープンソフトウェアライブラリを使用して、ロシア語のFAQに回答し、音声アシスタントに統合できます。
DeepPavlovライブラリに基づいた質疑応答スキルの作成
DeepPavlovはまさにそのようなライブラリです。 テキスト分類コンポーネントを含む、言語分析用のトレーニング済みコンポーネントのセットが含まれています。 DeepPavlovのさまざまなコンポーネントの詳細については、 ヘルプをご覧ください。
DeepPavlovでの作業には、開発者の特別なスキルは必要ありません。ライブラリは無料であり、微調整のための十分な機会を提供します。
このチュートリアルには、知識ベースに基づいてスキルを作成するためのすべての手順が記載されています。 チュートリアルのコードを別のスクリプトに書き直し、スクリプトからスキルを実行することをお勧めします。
DeepPavlovライブラリをインストールする
開始するには、Python 3.6をインストールし、開発環境をアクティブにします。 次に、DeepPavlovをインストールします。
source activate py36 pip install -q deeppavlov
スキル開発
DeepPavlovのスキル(スキル)は、機能( テキスト分類 、 オープンドメインの質問応答など)に関係なく、統一された入出力形式を持つエンティティです。 スキルは、シンプルな対話システムの単一スタックに結合できるように作成されます。これにより、リクエストを受信すると、最高の自信を持ってスキルから回答が得られます。
よく寄せられる質問のリストに基づいて、ユーザーの要求に応答するSimilarityMatchingSkillクラスのオブジェクトを作成します。
from deeppavlov.contrib.skills.similarity_matching_skill import SimilarityMatchingSkill faq = SimilarityMatchingSkill(data_path = 'http://files.deeppavlov.ai/faq/dataset_ru.csv', x_col_name = 'Question', y_col_name = 'Answer', save_load_path = './model', config_type = 'tfidf_autofaq', edit_dict = {}, train = True)
SimilarityMatchingSkillクラスのオブジェクトには、次のパラメーターがあります。
- data_path-データを含むcsvファイルへのパス(コンマ区切り文字)
- x_col_name-csvファイルに質問がある列の名前(質問、デフォルト)
- y_col_name-csvファイルに回答がある列の名前(回答、デフォルト)
- config_typeは、分類に使用する構成の名前です。 すべての構成のリスト。
- edit_dict-特定のconfig_typeの設定で書き換える必要のあるパラメーターを持つ `dict`
- save_load_path-訓練されたモデルを保存するパス
- train-モデルを訓練するかどうか
モデルの使用を開始するには、トレーニング後に次のコマンドでモデルをロードするだけで十分です。
faq = SimilarityMatchingSkill(save_load_path='./model')`.
SimilarityMatchingSkillクラスは、テキスト分類コンポーネントへのアクセスを簡素化します。 ただし、構成の一部を変更したい場合は、edit_dictパラメーターを定義することでこれを行うことができます。 SimilarityMatchingSkillクラスのオブジェクト(他のスキルと同様)は、入力として3つのパラメーターを受け取ります。分類のオファーのリスト、クエリ履歴のリスト、および状態のリスト(SimilarityMatchingSkillの場合、最後の2つは空のリストです)。
faq([' ?'],[],[])
通常、通常の対話システムにはいくつかのスキルが含まれています。 複数のスキルでの作業を示すために、PatternMatchingSkillクラスのいくつかのスキルを作成します。
from deeppavlov.skills.pattern_matching_skill import PatternMatchingSkill hello = PatternMatchingSkill(responses=['', ''], patterns=['', '']) bye = PatternMatchingSkill(responses=['', ' '], patterns=['', ' ']) fallback = PatternMatchingSkill(responses=[' '], default_confidence = 0.3)
PatternMatchingSkillは、ユーザーリクエストがパターンリストの要素の1つに一致し、応答リストのランダム要素にdefault_confidence信頼度で応答するときに呼び出される単純なスキルクラスです。 default_confidenceパラメーターを手動で構成して、スキル応答に優先順位を付けることができます。
最後のステップは、スキルをエージェントに結合し、スキル選択パラメーターを構成することです。 パラメータ `HighestConfidenceSelector`は、スキルが最高の信頼度で呼び出されることを決定します。
from deeppavlov.agents.default_agent.default_agent import DefaultAgent from deeppavlov.agents.processors.highest_confidence_selector import HighestConfidenceSelector agent = DefaultAgent([hello, bye, faq, fallback], skills_selector=HighestConfidenceSelector())
次に、 `endpoint = 'faq``リクエストのパスと接続ポート` port = 5000`でサーバーを起動します
from deeppavlov.utils.alice import start_agent_server start_agent_server(agent, host='0.0.0.0', port=5000, endpoint='/faq')
Yandex.Dialogsには、外部IPアドレスを持つサーバーと、Webhook URLとしてhttpsを介したアクセスが必要であることに注意してください。 迅速なプロトタイプ作成には、 Ngrokを使用できます。ローカルネットワーク上のDeepPavlovからサーバーにアクセスするためのトンネルを作成できます。 これを行うには、実行します
ngrok http 5000
DeepPavlovを使用してサーバー上で。 これに対応して、2つのトンネルが作成されます。1つはhttpプロトコルとhttpsプロトコル用です。 httpsのトンネルアドレスをコピーし、リンクにエンドポイント/ faqを追加します。最後のリンクは、Yandex.DialogのWebhook URLになります。
アリスでスキルを起動する
Yandex.Dialogsプラットフォームとの相互作用をテストするには、dialogs.yandex.ru / developerに移動して、 新しいダイアログを作成します。 一意の名前とアクティベーション名を設定します。 Webhook URLには、以前に受信したリンクを指定します。 変更を保存します。 スキルを操作するには、[テスト]タブに移動します。
おわりに
これで、DeepPavlovライブラリのテキスト分類モデルを使用して質問応答ボットを作成する方法、DeepPavlovを使用してスキルを迅速にプロトタイプ化し、Aliceに接続する方法がわかりました。
ところで、Amazon AlexaとMicrosoft Bot Frameworkに接続するためのインターフェイスもライブラリに実装されています。
コメントでフィードバックを歓迎します。 また、DeepPavlovに関する質問はフォーラムに投稿できます。