如何使用IBM Bluemix语言翻译服务翻译包含HTML的文本?

时间:2016-05-21 16:22:48

标签: php html ibm-cloud ibm-watson language-translation

例如,我有内容:

<p><strong>Je vais être</strong> va demain.</p>

如果我将此内容作为纯文本传递给https://gateway.watsonplatform.net/language-translation/api/v2/translate,例如:

Je vais être va demain.

然后我会得到我想要的东西:

I'll be going tomorrow.

但是,我仍然需要HTML中的内容,而不是纯文本。如果我使用url编码传递文本或使用实体进行转义,则返回的文本会受到严重影响。

使用网址编码:

<p><strong>Je   will   être</strong>   will   demain. </p>

转义html实体:

<p><strong>I'll be</strong> will tomorrow.</p>

我还注意到在内容中放置任何类型的分隔符都会影响翻译。例如,使用克拉:

Je vais être^ va demain.

将返回翻译:

I'll be ^ will tomorrow.

因此解决方案必须在请求的翻译中没有分隔符。

2 个答案:

答案 0 :(得分:0)

查看语言翻译API(https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/language-translation/api/v2/#translate),我发现您可以在请求中放置多个文本输入的列表。我只是按顺序剥离HTML标记,并在较小的文本块上请求转换。您可以使用简单的堆栈执行此操作 - 将HTML标记推送到堆栈或将要翻译的文本。然后,一旦您收到翻译回复,就将所有内容从堆栈中弹出。

答案 1 :(得分:0)

您可以将HTML发送到AlchemyLanguage Text Extraction并提取稍后发送到LanguageTranslation的文本。

curl你会做:

curl -X POST \
-d "apikey=$API_KEY" \
-d "outputMode=json" \
--data-urlencode html@tech_crunch.html \
-d "url=http://techcrunch.com/2016/01/29/ibm-watson-weather-company-sale/" \
"https://gateway-a.watsonplatform.net/calls/html/HTMLGetRawText"

,输出为:

{
  "status": "OK",
  "usage": "By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html",
  "url": "http://techcrunch.com/2016/01/29/ibm-watson-weather-company-sale/",
  "text": "IBM Closes Weather Co. Purchase, Names David Kenny New Head Of Watson Platform  |  TechCrunch"
}