Ad

англійськафранцузькаіспанська

Безкоштовний онлайн-редактор | DOC > | XLS > | PPT >


Значок OffiDocs

Перевірка граматики лінгвокомпонентів

OffiDocs надає OpenOffice онлайн, тому ми зацікавлені в Lingucomponent Grammar Checking, цілями якого є розробка, розробка та впровадження засобу перевірки граматики для англійської та інших підтримуваних мов. API перевірки граматики доступний в OpenOffice.org з версії 3.0.

Перевірка граматики розглядається як конкретна реалізація процесу ітерації тексту та розмітки, інші процеси ітерації/розмітки, як-от перевірка орфографії чи інтелектуальне тегування, в основному можуть працювати так само (хоча наразі вони не реалізовані таким чином). Якщо в наступній документації згадується перевірка граматики, це можна розглядати як заповнювач для більш загального завдання розмітки тексту. Оскільки об’єкти, що виконують текстову ітерацію, знають про конкретний процес розмітки, для якого вони використовуються, в основному можливо точно налаштувати ітерацію для потреб цього процесу.

Процес перевірки граматики складається з

- один або кілька документів, що підлягають перевірці

- одна або більше реалізацій перевірки граматики, кожна з яких підтримує принаймні одну мову.

- одне або кілька діалогових вікон перевірки граматики (щонайбільше один раз на документ)

- одне контекстне меню при натисканні на текст, позначений як неправильний

- глобальний ітератор перевірки граматики (спільний для всіх документів), реалізований як єдиний елемент, перевіряючи одне речення (довільного документа) за раз.

- один об'єкт потоку на засіб перевірки граматики, який використовується для виконання перевірки без блокування GUI

- об'єкти, що повторюють текст документа, один об'єкт представляє єдине завдання перевірки граматики, яке було запитано

- об'єкти, що представляють текстові блоки в текстовому документі («плоскі абзаци»), які абстрагуються від конкретної структури документа і забезпечують доступ до тексту за допомогою простих текстових рядків і цілих значень, що описують положення і довжину підрядка.

 

Об'єкти та їх інтерфейси

У нас є три частини, які працюють разом. Перша частина походить від документа, що перевіряється, і це реалізація, яка є специфічною для певного типу документа (наприклад, Writer або Calc). Він інкапсулює доступ до тексту документа. Документ, який потрібно перевірити на наявність граматичних помилок, має підтримувати інтерфейс com.sun.star.text.XFlatParagraphIteratorProvider. Через цей інтерфейс він повинен мати можливість надавати об’єкти, що реалізують com.sun.star.text.XFlatParagraphIterator, які самі повертають об’єкти, що реалізують com.sun.star.text.XFlatParagraph. Останній інтерфейс походить від com.sun.star.text.XTextMarkup. Далі ми будемо називати ці об’єкти «ітераторами плоских абзаців» (FPIterator) і «плоскими абзацами» (FP). Якщо використовується слово «абзац», це також позначатиме «FP», а не справжній абзац у документі, оскільки обидва не завжди однакові.

FP не обов’язково є абзацом, як у контексті документів, це може бути їх сукупність (наприклад, список), і він містить не лише текст потоку, але й інший текстовий вміст, наприклад текстові кадри, верхні та нижні колонтитули тощо. Ядро документа може ефективно обробляти такі об’єкти FP об’єкти, це реалізація для конкретного документа. FP не розкриває повну внутрішню структуру тексту або його атрибути, його вміст доступний лише як рядок, що містить повний текстовий блок.

FPIterator — це об’єкт, який дозволяє перебирати всі об’єкти FP, які разом складають текстовий вміст документа. Порядок, у якому повторюються абзаци, є довільним і є деталлю реалізації FPIterator. «Звичайний» текстовий вміст зазвичай має надаватися в напрямку читання, але те, як інший текст, наприклад верхні та нижні колонтитули (які існують лише один раз, але повторюються на кожній сторінці) або текстові кадри (які можуть бути вбудовані в текст потоку), вписується в це не визначено заздалегідь. Ітерація по тексту завжди призначається процесу розмітки тексту, який обробляє весь документ. Таким чином, ітерація завершуватиметься в кінці документа і не закінчиться, доки всі абзаци не будуть позначені як «перевірені» для конкретного процесу розмітки (наприклад, перевірка граматики). Абзаци, позначені як «перемічені», будуть пропущені під час ітерації. Тож для клієнтів FPIterator їх легко використовувати: запитуйте у нього нові об’єкти FP, поки жоден не повернеться, і не дбайте про те, як це реалізовано.

Друга частина — граматична перевірка. Засіб перевірки граматики — це компонент, що реалізує інтерфейс com.sun.star.linguistic2.XGrammarChecker. Для кожної мови може існувати окремий компонент, здатний перевіряти наявність граматичних помилок у цій мові. Конфігурація покаже, який компонент відповідає за яку мову. Реалізація com.sun.star.linguistic2.XGrammarChecker, що представляє окремий компонент, буде інкапсулювати «приватний» API цього компонента перевірки граматики. Цей приватний API може бути заснований на UNO або на чистій Java, CLI або COM-інтерфейсі, C API тощо, усе, що можна використати або підключити до нього всередині реалізації інтерфейсу UNO. Оскільки інтерфейс досить малий, обернути наявні засоби перевірки граматики для використання їх у OpenOffice.org не повинно бути дуже складно.

Посередині лежить третій компонент, який є посередником між двома іншими. Він реалізує «логіку» процесу перевірки граматики. Оскільки він спілкується з двома іншими частинами через їхній визначений UNO API, лише ця середня частина не залежить від конкретного типу документа чи компонента перевірки граматики. Служба UNO під назвою com.sun.star.linguistic2.GrammarCheckingIterator — це компонент, який фактично виконує процес перевірки граматики для всіх підтримуваних сценаріїв. Це синглет, який контролює всі запущені процеси перевірки граматики і, таким чином, також знає всі існуючі компоненти перевірки граматики. Він реалізує інтерфейс com.sun.star.linguistic2.XGrammarCheckingIterator, а також надає об’єкт, що реалізує com.sun.star.linguistic2.XGrammarCheckingResultListener. Далі цей об’єкт буде називатися GCIterator.


прогін Chrome Extensions

Ad