Загрузить документы в сервис Watson Retrieve & Rank

Я реализую решение с помощью службы Watson Retrieve & Rank.

Когда я использую интерфейс инструментов, я загружаю свои документы, и они отображаются в виде списка, где я могу щелкнуть любой из них, чтобы открыть все заголовки, которые находятся внутри документа (блоки ответов), как вы можете видеть на Рисунок 1 и Изображение 2.

Когда я пытаюсь загрузить документы через Java, он не распознает документы, они загружаются по частям (блоки ответов как документы), каждая часть как новый документ.

Я хотел бы знать, как я могу загрузить свои документы целиком, а не только его части?

Вот коды для функции загрузки в Java:

    public Answers ConvertToUnits(File doc, String collection) throws ParseException, SolrServerException, IOException{
    DC.setUsernameAndPassword(USERNAME,PASSWORD);
    Answers response = DC.convertDocumentToAnswer(doc).execute();
    SolrInputDocument newdoc = new SolrInputDocument();
    WatsonProcessing wp = new WatsonProcessing();
    Collection<SolrInputDocument> newdocs = new ArrayList<SolrInputDocument>();

    for(int i=0; i<response.getAnswerUnits().size(); i++)
    {
        String titulo = response.getAnswerUnits().get(i).getTitle();
        String id = response.getAnswerUnits().get(i).getId();
        newdoc.addField("title", titulo);
        for(int j=0; j<response.getAnswerUnits().get(i).getContent().size(); j++)
        {
            String texto = response.getAnswerUnits().get(i).getContent().get(j).getText();
            newdoc.addField("body", texto);

        }
        wp.IndexDocument(newdoc,collection);
        newdoc.clear();
    }
    wp.ComitChanges(collection);
    return response;
}


      public void IndexDocument(SolrInputDocument newdoc, String collection) throws SolrServerException, IOException
  {
      UpdateRequest update = new UpdateRequest();
      update.add(newdoc);
      UpdateResponse addResponse = solrClient.add(collection, newdoc);
  }

person Archerspk    schedule 30.08.2016    source источник


Ответы (1)


В этой строке вы можете указать параметры конфигурации:

Answers response = DC.convertDocumentToAnswer(doc).execute();

Я думаю, что что-то вроде этого должно помочь:

String configAsString = "{ \"conversion_target\":\"answer_units\", \"answer_units\": { \"selector_tags\": [] } }";

JsonParser jsonParser = new JsonParser();
JsonObject customConfig = jsonParser.parse(configAsString).getAsJsonObject();    

Answers response = DC.convertDocumentToAnswer(doc, null, customConfig).execute();

Я не пробовал, поэтому, возможно, у меня не совсем правильный синтаксис, но, надеюсь, это направит вас на правильный путь.

По сути, то, что я пытаюсь здесь сделать, это использовать параметр selector_tags в конфигурации (см. https://www.ibm.com/watson/developercloud/doc/document-conversion/customizing.shtml#htmlau для документа об этом), чтобы указать, какие теги следует разделить в документе. на. Указание пустого списка без тегов приводит к тому, что он вообще не разбивается, а выходит в одном блоке ответов, как вы хотите.

(Обратите внимание, что вы также можете сделать это через интерфейс инструментов — сняв флажок «Разделить мои документы на отдельные ответы для меня» при загрузке документа)

person dalelane    schedule 30.08.2016
comment
Привет, спасибо за ответ и извините за задержку. Проблема в том, что мне также нужно разбить его на Заголовки и Тела, как и инструмент Retrieve & Rank, чтобы я мог использовать это для поиска нужной мне информации. Я заметил в некоторых других примерах, что люди используют тег, такой как Источник или Тема, чтобы зафиксировать несколько Заголовков/Тело в определенном документе, но Retrieve & Rank, кажется, не понимает такие теги, знаете ли вы, есть ли какие-либо теги, которые я можно использовать, чтобы указать источник документа, из которого исходит блок ответов, который понимает Retrieve & Rank? - person Archerspk; 06.09.2016
comment
Вы можете добавить любые другие поля в схему вашей коллекции, а затем включить их при индексировании документа. У вас есть newdoc.addField(title, titulo); в вашем примере. Если вы добавите дополнительные поля в схему, вы можете добавить еще много строк addField. И вы правы — одним из возможных способов использования этого может быть сохранение информации о документе, из которого получен блок ответов. Инструмент делает это, чтобы иметь возможность отображать все блоки ответов, полученные из документа, вместе. - person dalelane; 06.09.2016
comment
Отлично, я использую конфигурацию/схему инструментария в качестве схемы по умолчанию, но не могу найти теги в схеме для указания источника документа. Вы знаете, что это за тег? - person Archerspk; 08.09.2016
comment
Поле sourceDocId используется инструментом для хранения идентификатора документа, из которого взят отдельный отрывок, однако эти идентификаторы генерируются и управляются самим инструментом. Поэтому я не думаю, что у вас будет простой способ сделать это только из Solr. В более общем смысле, я думаю, что повторное использование полей, которые используются инструментами внутри, вероятно, является плохой идеей и, конечно же, не поддерживается. - person dalelane; 08.09.2016