2016-09-08 5 views
1

Ich schreibe ein Programm, das von IBM Watson Document Conversion Dienst nutzt, um Dokumente verschiedener Typen in Antworteinheiten zu konvertieren. Jede Antwort-Einheit, die durch den Dienst zurückgegeben wird, enthält einen Array genannt Inhalt die aus Objekten zusammengesetzt ist, mit einem media_type und ein Text Elemente.Kann das vom Watson Document Conversion-Service zurückgegebene Inhaltsfeld für Antworteinheiten mehr als ein Element enthalten?

Ich habe noch nie mehr als ein Element in diesen Inhalt Array gesehen, und ich bin mir nicht sicher, wie sie zu handhaben, wenn dort sind. Kann es jemals mehr als ein Element in diesem Array geben und wenn ja, welche möglichen Werte gibt es? Haben sie alle den gleichen Wert media_type Wert? Mein Plan ist im Moment, alle Text Elemente in eins zu kombinieren, wenn mehr als eins existiert.

Antwort

2

Das Inhaltsfeld der Antworteinheit kann mehr als ein Element enthalten (wenn Sie dies anfordern - siehe unten). Wenn dies der Fall ist, wird jedes Element im Array eine andere Medientypdarstellung desselben Inhalts sein.

Sie können dies erreichen, indem Sie mehr als einen Ausgabemedientyp in Ihre Anfrage eingeben. Wenn Sie dies tun, enthält das Ausgabe-Content-Array mehr als element - mit einem Element für jeden der angeforderten Medientypen.

Zum Beispiel, wenn Ihre Anfrage eine config wie diese enthalten:

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

(siehe https://www.ibm.com/watson/developercloud/document-conversion/api/v1/#convert-document zur Erläuterung, wo Sie setzen config)

Dann wird die content in Ihrer Antwort enthält:

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

Wenn Sie nicht ‚T die Ausgangsmedientyp-Parameter angeben, werden Sie den Standardwert erhalten, das ist:

 output_media_types : ['text/plain'] 

Aus diesem Grunde ist man immer einen Array der Länge 1, mit einer Text-Version der Ausgabe bekommen. Da Sie implizit mit der Standardkonfiguration arbeiten, fragen Sie nach einem Ausgabemedientyp.

+0

Dies ist eine gute Information. Da ich keinen output_media_type spezifiziere, gibt es dann nur ein Element? Ich konvertiere alle Dateitypen, die Document Conversion akzeptiert. –

+0

Entschuldigung, ich sollte das Standardverhalten enthalten, wenn Sie die Option nicht einschließen - Ich habe meine Antwort aktualisiert, um diese jetzt einzuschließen. – dalelane

+1

Ich möchte nur darauf hinweisen - die Option output_media_types ist nicht dokumentiert, da sie derzeit nicht unterstützt wird (z. B. kann sie in Zukunft verschwinden).Außerdem kann das HTML, das Sie in diesen Snippets erhalten, mit nicht übereinstimmenden Tags fragmentiert sein. –

1

Der Antwort-Einheiten-Konverter teilt sich derzeit nur nach Überschriften-Tags auf (standardmäßig <h1> und <h2>). Wenn Sie Ihre Antwort Einheiten mehr granular teilen, können Sie die Ebene ändern, bei dem sie, indem man in einer benutzerdefinierten Konfiguration teilt:

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

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

+0

Das bringt Ihnen mehr als ein Element in das Ausgabe-Array "answer_units", oder? (statt in der Ausgabe "Inhalt" Array der OP gefragt, über). Oder verstehe ich etwas falsch? – dalelane

+0

Sie haben absolut Recht; Ich habe die Frage nicht genau genug gelesen. –

Verwandte Themen