Ad

InglêsFrancêsEspanhol

Editor online grátis | DOC > | XLS > | PPT >


Favicon OffiDocs

Verificação gramatical do componente linguístico

O OffiDocs fornece o OpenOffice online, então estamos interessados ​​no Lingucomponent Grammar Checking, cujos objetivos são projetar, desenvolver e implementar um verificador gramatical para inglês e outros idiomas suportados. Uma API de verificação gramatical está disponível no OpenOffice.org desde a versão 3.0.

A verificação gramatical é vista como uma implementação particular de um processo de iteração e marcação de texto, outros processos de iteração/marcação, como verificação ortográfica ou marcação inteligente, basicamente podem funcionar da mesma maneira (embora atualmente não sejam implementados dessa maneira). Se a verificação gramatical for mencionada na documentação a seguir, isso pode ser visto como um espaço reservado para a tarefa mais geral de marcação de texto. Como os objetos que executam a iteração de texto estão cientes do processo de marcação específico para o qual são usados, é basicamente possível ajustar a iteração para as necessidades desse processo.

O processo de verificação gramatical consiste em

- um ou mais documentos a serem verificados

- uma ou mais implementações de verificador gramatical, cada uma suportando pelo menos um idioma.

- uma ou mais caixas de diálogo de verificação gramatical (no máximo uma instância por documento)

- um menu de contexto ao clicar no texto marcado como incorreto

- um iterador de verificação gramatical global (comum a todos os documentos) implementado como singleton, verificando uma frase (de um documento arbitrário) por vez.

- um objeto de encadeamento por verificador gramatical que é usado para executar a verificação sem bloquear a GUI

- objetos iterando através do texto de um documento, um objeto representando uma única tarefa de verificação gramatical que foi solicitada

- objetos que representam blocos de texto em um documento de texto (“parágrafos simples”) que abstraem da estrutura concreta do documento e fornecem acesso ao texto por cadeias de texto simples e valores inteiros que descrevem posições e comprimentos de subcadeias.

 

Objetos e suas interfaces

Temos três partes trabalhando juntas. A primeira parte vem do documento que está sendo verificado e é uma implementação específica para o tipo particular de documento (por exemplo, Writer ou Calc). Ele encapsula o acesso ao texto do documento. Um documento que deseja ser verificado quanto a erros gramaticais deve suportar a interface com.sun.star.text.XFlatParagraphIteratorProvider. Por meio dessa interface, ele deve ser capaz de fornecer objetos implementando com.sun.star.text.XFlatParagraphIterator que retornam objetos implementando com.sun.star.text.XFlatParagraph. A última interface é derivada de com.sun.star.text.XTextMarkup. A seguir, chamaremos esses objetos de "iteradores de parágrafo plano" (FPIterator) e "parágrafos planos" (FP). Se a palavra "parágrafo" for usada, isso também denotará um "PF", não um parágrafo real no documento, pois nem sempre ambos são iguais.

Um PF não é necessariamente um parágrafo como no contexto de documentos, pode ser uma coleção deles (por exemplo, uma lista) e não contém apenas o texto de fluxo, mas também outro conteúdo de texto, como quadros de texto, cabeçalhos e rodapés, etc. o núcleo do documento pode lidar com tais objetos FP de forma eficiente, esta é uma implementação específica do documento. O FP não revela a estrutura de texto interna completa ou seus atributos, seu conteúdo só é acessível como uma string contendo o bloco de texto completo.

Um FPIterator é um objeto que permite iterar por todos os objetos FP que juntos compõem o conteúdo de texto do documento. A ordem na qual os parágrafos são iterados é arbitrária e um detalhe de implementação do FPIterator. O conteúdo de texto "normal" geralmente deve ser fornecido na direção da leitura, mas como outros textos, como cabeçalhos e rodapés (que existem apenas uma vez, mas são repetidos em todas as páginas) ou quadros de texto (que podem ser incorporados ao texto de fluxo) se encaixam é não predeterminado. A iteração pelo texto é sempre atribuída a um processo de marcação de texto que deve tratar todo o documento. Assim, a iteração será encerrada no final do documento e não terminará antes que todos os parágrafos tenham sido marcados como "verificados" para o processo de marcação específico (como verificação gramatical). Os parágrafos marcados como "marcados" serão ignorados na iteração. Portanto, para os clientes de um FPIterator, é simples usá-los: peça novos objetos FP até que nenhum seja retornado e não se preocupe com a forma como é implementado.

A segunda parte é um verificador gramatical. Um verificador gramatical é um componente que implementa a interface com.sun.star.linguistic2.XGrammarChecker. Para cada idioma pode haver um componente específico capaz de verificar erros gramaticais nesse idioma. A configuração dirá qual componente é responsável por qual idioma. A implementação de com.sun.star.linguistic2.XGrammarChecker que representa um determinado componente encapsulará a API "privada" desse componente de verificação gramatical. Essa API privada pode ser baseada em UNO ou Java puro, uma interface CLI ou COM, uma API C etc., tudo o que pode ser usado ou interligado dentro de uma implementação de uma interface UNO. Como a interface é bem pequena, não deve ser muito complicado agrupar os verificadores gramaticais existentes para usá-los no OpenOffice.org.

No meio está o terceiro componente, que faz a mediação entre os outros dois. Ele implementa a "lógica" do processo de verificação gramatical. Como ele se comunica com as outras duas partes por sua API UNO definida, apenas essa parte do meio é independente do tipo de documento específico ou do componente de verificação gramatical. Um serviço UNO chamado com.sun.star.linguistic2.GrammarCheckingIterator é o componente que realmente executa o processo de verificação gramatical para todos os cenários suportados. É um singleton que controla todos os processos de verificação gramatical em execução e, portanto, também conhece todos os componentes de verificação gramatical existentes. Ele implementa a interface com.sun.star.linguistic2.XGrammarCheckingIterator e também fornece um objeto implementando com.sun.star.linguistic2.XGrammarCheckingResultListener. A seguir, esse objeto será chamado de GCIterator.


Execute Chrome Extensions

Ad