Может ли массив содержимого блока ответа, возвращаемый службой преобразования документов Watson, содержать более одного элемента?

Я пишу программу, которая использует преимущества службы IBM Watson Document Conversion для преобразования документов различных типов в блоки ответов. Каждый блок ответа, возвращаемый службой, содержит массив с именем content, который состоит из объектов, имеющих media_type и text < / em> элемент.

Я никогда не видел более одного элемента в этом массиве content, и я не уверен, как с ними обращаться, если бы они были. Может ли в этом массиве когда-либо быть более одного элемента, и если да, то каковы возможные значения? Будет ли у всех них одинаковое значение media_type? На данный момент я планирую объединить все элементы text в один, если их больше одного.


person David Powell    schedule 08.09.2016    source источник


Ответы (2)


Массив содержимого блока ответа может иметь более одного элемента (если вы запросите это - см. Ниже). Если это так, каждый элемент в массиве будет представлением одного и того же содержимого другого типа мультимедиа.

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

Например, если ваш запрос содержит config, например:

{
    conversion_target : 'answer_units',
    answer_units : {
        output_media_types : ['text/plain', 'text/html']
    }
}

(см. https://www.ibm.com/watson/developercloud/document-conversion/api/v1/#convert-document для объяснения того, куда вы поместили config).

Тогда content в вашем ответе будет содержать:

content : [
    {
        text : <the plain text contents of the answer unit>,
        ...
    },
    {
        text : <the HTML contents of the answer unit>,
        ...
    }
]

Если вы не укажете параметр типа выходного носителя, вы получите значение по умолчанию:

        output_media_types : ['text/plain']

Вот почему вы всегда получаете массив длиной 1 с текстовой версией вывода. Потому что неявно, оставляя его с конфигурацией по умолчанию, вы запрашиваете один тип выходного носителя.

person dalelane    schedule 09.09.2016
comment
Это хорошая информация. Поскольку я не указываю output_media_type, будет ли тогда только один элемент? Я конвертирую все типы файлов, которые принимает Document Conversion. - person David Powell; 09.09.2016
comment
извините, я должен был включить поведение по умолчанию, если вы не включаете эту опцию - я обновил свой ответ, чтобы включить это сейчас. - person dalelane; 10.09.2016
comment
Просто хочу отметить - опция output_media_types не задокументирована, потому что в настоящее время она не поддерживается (например, она может исчезнуть в будущем). Кроме того, HTML-код, который вы возвращаете в этих фрагментах, может быть фрагментирован с несовпадающими тегами. - person Matt F; 12.09.2016
comment
Хороший момент - не заметил этого. Думаю, я впервые узнал об этом от developer.ibm.com/answers/answers/ 244613 / view.html вместо документа API, который, вероятно, должен был быть ключом к разгадке! - person dalelane; 12.09.2016

Конвертер единиц ответа в настоящее время разделяется только по тегам заголовков (по умолчанию <h1> и <h2>). Если вы хотите более детально разделить блоки ответов, вы можете изменить уровень, на котором они разделяются, передав настраиваемую конфигурацию:

{
    "answer_units": {
        "selector_tags": ["h1","h2","h3","h4","h5","h6"]
    }
}

См. https://www.ibm.com/watson/developercloud/doc/document-conversion/customizing.shtml#htmlau.

person Matt F    schedule 09.09.2016
comment
Это дает вам более одного элемента в выходном массиве answer_units, не так ли? (а не в выходном массиве content, о котором спрашивал ОП). Или я что-то недопонимаю? - person dalelane; 09.09.2016
comment
Вы абсолютно правы; Я недостаточно внимательно прочитал вопрос. - person Matt F; 12.09.2016