IBM Watson Cognitive Insights (CI) サービスを使用して、自然言語検索機能を実装しようとしています。ユーザーが自然言語を使用して質問を入力し、CI コーパスから適切なドキュメントを返すことができるようにしたいと考えています。トレーニングの必要性を回避し、Watson インフラストラクチャのコストを抑えるために、Watson QA サービスではなく CI を使用しています (つまり、コーパス/ユース ケースごとに専用の Watson インスタンスが必要になるのを回避します)。
CI API を使用して必要なコーパスを構築することはできますが、可能な限り正確で正確なクエリを実行するには、どの API をどの順序で使用すればよいかわかりません。
私たちの当初の考えは次のとおりでした。
ユーザーの自然言語の質問を受け入れ、そのテキスト文字列を「テキストの概念を識別する」API (CI API リファレンス ドキュメントの下から 6 番目にリストされている) に投稿して、質問に関連する概念のリストを取得します。
次に、「コーパス内で概念検索を実行する」API (CI API リファレンス ドキュメントの下から 3 番目にリストされている) を使用して GET を実行し、コーパスから関連ドキュメントのリストを取得します。
最初の質問 - これは、この記事の最初の段落で説明した目的を達成するための正しい方法ですか? 目的を達成するために、CI API を別の方法で組み合わせたり、複数の Watson サービスを一緒に使用したりする必要がありますか?
最初のアプローチが正しかった場合、単純な質問 (たとえば、「MySQL データベースの破損を修復するにはどうすればよいですか」) を「テキストの一部で概念を特定する」API に送信しても、包括的な情報が得られないことがわかります。関連する概念のリストが戻ってきます。例えば:
curl -u userid:password -k -d "How can I repair MySQL database corruption" https://gateway.watsonplatform.net/concept-insights-beta/api/v1/graph/wikipedia/en-20120601?func=annotateText
戻り値:
[{"concept":"/graph/wikipedia/en-20120601/MySQL","coords":[[17,22]],"weight":0.85504603}]
ただし、この質問例には他の概念 (修復、破損、データベースなど) が関連付けられていることは明らかです。
別の例では、テキスト「修復」を「テキストの一部の概念を識別する」API に送信しました。
curl -u userid:password -k -d "repair" https://gateway.watsonplatform.net/concept-insights-beta/api/v1/graph/wikipedia/en-20120601?func=annotateText
そして返されました:
[{"concept":"/graph/wikipedia/en-20120601/Repair","coords":[[0,6]],"weight":0.65392953}]
最初の例からも「修復」の概念を取り戻すべきだったようです。「修復」を送信すると API が「修復」の概念を返すのに、「修復」という単語を含む「MySQL データベースの破損を修復するにはどうすればよいですか」というテキストを送信すると返されないのはなぜですか。</p>
Watson Concept Insights サービスに基づいて自然言語検索機能を実装する最良の方法についてアドバイスをお願いします (適切な場合は他のサービスと組み合わせてください)。