Deslocamentos de texto na saída de API de Análise de TextoText offsets in the Text Analytics API output

O suporte multilíngue e Emoji levou a codificações Unicode que usam mais de um ponto de código para representar um único caractere exibido, chamado de grafemas.Multilingual and emoji support has led to Unicode encodings that use more than one code point to represent a single displayed character, called a grapheme. Por exemplo, emojis como 🌷 e 👍 podem usar vários caracteres para compor a forma com caracteres adicionais para atributos visuais, como o tom de capa.For example, emojis like 🌷 and 👍 may use several characters to compose the shape with additional characters for visual attributes, such as skin tone. Da mesma forma, a palavra híndi अनुच्छेद é codificada como cinco letras e três marcas de combinação.Similarly, the Hindi word अनुच्छेद is encoded as five letters and three combining marks.

Devido aos diferentes comprimentos de codificações multilíngues e de emojis, o API de Análise de Texto pode retornar deslocamentos na resposta.Because of the different lengths of possible multilingual and emoji encodings, the Text Analytics API may return offsets in the response.

Deslocamentos na resposta da API.Offsets in the API response.

Sempre que os deslocamentos forem retornados à resposta da API, como reconhecimento de entidade nomeada ou análise de sentimento, lembre-se do seguinte:Whenever offsets are returned the API response, such as Named Entity Recognition or Sentiment Analysis, remember the following:

  • Os elementos na resposta podem ser específicos para o ponto de extremidade que foi chamado.Elements in the response may be specific to the endpoint that was called.
  • As cargas HTTP POST/GET são codificadas em UTF-8, que podem ou não ser a codificação de caracteres padrão no seu compilador do lado do cliente ou sistema operacional.HTTP POST/GET payloads are encoded in UTF-8, which may or may not be the default character encoding on your client-side compiler or operating system.
  • Os deslocamentos se referem a contagens de grafemas com base no padrão Unicode 8.0.0 , não em contagens de caracteres.Offsets refer to grapheme counts based on the Unicode 8.0.0 standard, not character counts.

Extraindo subcadeias de texto com deslocamentosExtracting substrings from text with offsets

Os deslocamentos podem causar problemas ao usar métodos de subcadeias de caracteres baseados em caractere, por exemplo, o método de subcadeias de caracteres .net ().Offsets can cause problems when using character-based substring methods, for example the .NET substring() method. Um problema é que um deslocamento pode fazer com que um método de subcadeia de caracteres termine no meio de uma codificação grafemas de vários caracteres, em vez do final.One problem is that an offset may cause a substring method to end in the middle of a multi-character grapheme encoding instead of the end.

No .NET, considere usar a classe StringInfo , que permite que você trabalhe com uma cadeia de caracteres como uma série de elementos textuais, em vez de objetos de caractere individuais.In .NET, consider using the StringInfo class, which enables you to work with a string as a series of textual elements, rather than individual character objects. Você também pode procurar por bibliotecas de divisores grafemas em seu ambiente de software preferido.You can also look for grapheme splitter libraries in your preferred software environment.

O API de Análise de Texto também retorna esses elementos textuais, por conveniência.The Text Analytics API returns these textual elements as well, for convenience.

Deslocamentos na versão de API 3,1-PreviewOffsets in API version 3.1-preview

A partir da versão de API 3,1-Preview. 1, todos os API de Análise de Texto pontos de extremidade que retornam um deslocamento oferecerão suporte ao stringIndexType parâmetro.Beginning with API version 3.1-preview.1, all Text Analytics API endpoints that return an offset will support the stringIndexType parameter. Esse parâmetro ajusta os offset atributos e length na saída da API para corresponder ao esquema de iteração de cadeia de caracteres solicitado.This parameter adjusts the offset and length attributes in the API output to match the requested string iteration scheme. Atualmente, há suporte para três tipos:Currently, we support three types:

  1. textElement_v8(padrão): itera sobre graphemes conforme definido pelo padrão Unicode 8.0.0textElement_v8 (default): iterates over graphemes as defined by the Unicode 8.0.0 standard
  2. unicodeCodePoint: itera sobre pontos de código Unicode, o esquema padrão para Python 3unicodeCodePoint: iterates over Unicode Code Points, the default scheme for Python 3
  3. utf16CodeUnit: itera em unidades de código UTF-16, o esquema padrão para JavaScript, Java e .netutf16CodeUnit: iterates over UTF-16 Code Units, the default scheme for Javascript, Java, and .NET

Se o stringIndexType solicitado corresponder ao ambiente de programação de sua escolha, a extração de subcadeia de caracteres poderá ser feita usando métodos padrão substring ou Slice.If the stringIndexType requested matches the programming environment of choice, substring extraction can be done using standard substring or slice methods.

Confira tambémSee also