Получить имя документа IBM Discovery - PullRequest
0 голосов
/ 13 февраля 2019

Я интегрировал Watson Discovery и Watson Assistant, поэтому пользователь может запрашивать документы Discovery из Assistant.На данный момент я показываю отрывок, который имеет наибольший рейтинг прохода.Теперь я хочу отобразить имя документа, из какого документа извлекается отрывок.Ниже приведен мой код Node.js.

function main(params) {
const DiscoveryV1 = require('watson-developer-cloud/discovery/v1');
  return new Promise(function (resolve, reject) {

var discovery = new DiscoveryV1({
        url: 'https://gateway-lon.watsonplatform.net/discovery/api',
        iam_apikey:'vvvvvvvvvv',  /* watson discovery api key */
        version: '2018-12-03'
      });

      discovery.query(
        {environment_id: 'vvvvvv', /* watson discovery environment id */
        collection_id: 'vvvvvvvvvv', /* watson discovery collection id */
        natural_language_query: params.message, 
        passages: 'true'
      }, function(err, data) {
        if (err) {
          return reject(err);
        }

       return resolve(data.passages[1]);
      }); 
  });
}

Кто-нибудь может предложить изменения для отображения имени документа?

1 Ответ

0 голосов
/ 16 февраля 2019

@ msr_003 Есть два способа справиться с этим.document_id документа, где был извлечен отрывок, возвращается в ответе отрывка.Поле document_id ответа прохождения соответствует полю id документов, возвращаемых в ответе на запрос.Вы можете посмотреть в поле extracted_metadata.filename ответа документа, где document_id (отрывка) = id (документа, из которого он поступил).По общему признанию сбивает с толку, что одно и то же поле упоминается двумя разными способами.

Также обратите внимание, что количество документов, возвращаемых в вашем ответе на запрос, будет влиять на то, был ли возвращен документ, из которого получен отрывок, или нет.Например, скажем, вы вернули 5 отрывков и решили вернуть 5 документов.Вполне возможно, что один или несколько возвращенных отрывков взяты из документов, которые не входят в топ-5 возвращаемых документов.Если это произойдет, вы можете вернуть большее количество документов в ответе на запрос, чтобы предотвратить это.Так, например, верните 100 лучших документов, когда вы вернетесь 5 отрывков, чтобы предотвратить это.

Другая вещь, которую вы можете сделать, это использовать API деталей документа https://cloud.ibm.com/apidocs/discovery#get-document-details, чтобы получить подробную информацию одокумент, откуда пришел отрывок.Хотя это займет второй вызов API и будет медленнее, это исключает вероятность того, что документ не будет возвращен в исходном результате запроса.

...