Problema com acentos e codificação com Bing Verificar ortografia v7 API

votos
1

Então, eu estou tentando trabalhar com Bing verificação ortográfica API em PHP, mas eu estou tendo um questões onde acentos e outros caracteres especiais não são decodificados corretamente, criando muitos erros que não estão no texto original e brincar com os deslocamentos.

Minha implementação é bastante simples - é fortemente baseado no exemplo que eles dão em sua documentação. Eu não tenho certeza se eu deveria estar fazendo algo diferente ou se é um problema do seu lado com a forma como eles decodificar esses caracteres especiais (o que parece altamente improvável - me mexer alguma coisa é muito mais provável ..!)

Aqui está o código:

$host = 'https://api.cognitive.microsoft.com';
$path = '/bing/v7.0/spellcheck?';

$data = array (
    'mkt' => $lang,
    'mode' => 'proof',
    'text' => urlencode($text)
);

$encodedData = http_build_query($data);
$key = 'subscription key redacted for obvious reasons';

$headers =  Content-type: application/x-www-form-urlencoded\r\n .
            Ocp-Apim-Subscription-Key: $key\r\n;

if (isset($_SERVER['REMOTE_ADDR']))
    $headers .= X-MSEdge-ClientIP:  . $_SERVER['REMOTE_ADDR'] . \r\n;

$options = array (
    'http' => array (
        'header' => $headers,
        'method' => 'POST',
        'content' => $encodedData
    )
);
$context  = stream_context_create ($options);
$result = file_get_contents ($host . $path, false, $context);

if ($result === FALSE) {
    # Handle error
}

$decodedResult = json_decode($result, true);

Se, por exemplo, eu tento verificação ortográfica a seguinte seqüência:

d'instituição

$ EncodedData torna-se o seguinte:

mkt=fr-CA&method=proof&text=d%25E2%2580%2599institutions

E os resultados que recebo da API são as seguintes:

array(2) {
  [_type]=>
  string(10) SpellCheck
  [flaggedTokens]=>
  array(1) {
    [0]=>
    array(4) {
      [offset]=>
      int(8)
      [token]=>
      string(14) 99institutions
      [type]=>
      string(12) UnknownToken
      [suggestions]=>
      array(2) {
        [0]=>
        array(2) {
          [suggestion]=>
          string(15) 99 institutions
          [score]=>
          float(0.93191315174102)
        }
        [1]=>
        array(2) {
          [suggestion]=>
          string(14) 99 institution
          [score]=>
          float(0.6518044080768)
        }
      }
    }
  }
}

Como você pode ver, a decodificação parece ser problemático, como a% fica codificado duas vezes, e só é decodificada uma vez aparentemente. Agora, se eu remover o url_encode () ao definir o valor de 'texto' em $ data, ele vai funcionar bem para o apóstrofo, mas ele não funciona com acentos. Por exemplo, a seguinte seqüência:

responsabilité

é interpretado pelo API como

RESPONSABILITA ©

que retorna um erro.

Isso poderia muito bem ser algo simples que eu estou com vista, mas eu estive lutando com isso por um bom tempo e gostaria de receber qualquer ajuda que puder conseguir.

Obrigado,

- Émile

[Editar] Bem, como sempre ... quando em dúvida, suponha que você está errado. A API recomendada para mudar todos os acentos para letras regulares porque, mesmo se o idioma especificado era francês, ele ainda deu sugestões em Inglês ao invés de retornar um array vazio. Quanto aos acentos que não parecem ser decodificado, bem ... I foi que os dados sem qualquer conjunto doctype, então é claro que ele iria mostrar sem a codificação adequada-ing var_dump. Desculpe por isso - no final, simplesmente removendo o urlencode () faz o truque!

Publicado 04/01/2018 em 00:21
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

De acordo com os documentos :

A API suporta dois modos de prova, prova e ortográfica . O modo padrão é prova. O modo de grafia Proof fornece as verificações mais abrangentes, mas está disponível apenas no mercado en-US (Inglês-Estados Unidos). Para todos os outros mercados, definir o parâmetro de consulta de modo de soletrar. O modo de soletração encontra a maioria dos erros de ortografia, mas não encontra alguns dos erros de gramática que Proof pega (por exemplo, capitalização e palavras repetidas).

Respondeu 04/01/2018 em 01:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more