Система перевірки орфографії

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

В обчислювальній техніці система перевірки орфографії (т. зв. спелчекер) — це допоміжна програма, яка шукає в тексті документа слова, написані неправильно. Знайдені помилки позначаються спеціальним чином — зазвичай для цього використовується червоне підкреслення. У деяких випадках користувачеві, окрім зазначення місць можливих помилок, надається можливість вибрати один із правильних варіантів написання.

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

Принцип роботи

[ред. | ред. код]

Зазвичай система перевірки орфографії виконує такі дії.

  • Зчитує текст і виокремлює слова, з яких він складається.
  • Порівнює кожне слово тексту зі списком правильно написаних слів (тобто словником). Такий список, окрім власне слів, може містити додаткову інформацію, як-от місця, де може бути знак переносу, лексичні й граматичні атрибути тощо.
  • Додаткова дія, особливості якої залежать від мови: алгоритм підтримки морфології. Система має враховувати не тільки початкову форму слова, а й усі можливі його словоформи — множину, відмінки, стягнення тощо. У мовах із розвинутою морфологією (як-от таких, яким притаманна аглютинація, відмінювання тощо) цей процес може бути вельми складним.

Користь від морфологічного аналізу — тобто перевірка чималої кількості словоформ — у простих мовах на кшталт англійської не очевидна, але користь для синтетичних мов, як-от німецька, угорська, українська, турецька — безсумнівна.

Як додаток до цих компонентів, інтерфейс програм дає користувачам змогу ухвалювати або відкидати запропоновані заміни і змінювати спосіб роботи програми.

Існують також альтернативні типи систем перевірки орфографії, у яких для виявлення помилок замість правильно написаних слів використовується виключно статистична інформація, як-от N-грами. Зазвичай такий підхід потребує чималих зусиль для отримання достатньої кількості статистичної інформації. Його основними перевагами є менша потреба в оперативній пам'яті та спроможність виправляти помилки в словах, яких немає у словнику[1] .

У деяких системах перевірки орфографії використовуються списки слів із неправильним написанням і пропозиції для таких слів. Такому підходу бракує гнучкості; найчастіше його використовують під час виправлень у паперових документах, як-от у розділах «Див. також» в енциклопедіях.

Для перевірки орфографії використовують також алгоритми кластерного аналізу[2] в поєднанні з фонетичною інформацією[3].

Історія

[ред. | ред. код]

До появи комп'ютерів

[ред. | ред. код]

Перші системи із функціями перевірки орфографії з'явилися в 1957 р. — зокрема системи перевірки орфографії для точкових зображень курсивного письма та спеціальні програми, які замість помилкових записів шукали записи в базах даних.

В 1961 р. Лестер Ернес[en]] (Les Earnest), який очолював дослідження цієї перспективної технології, вважав за потрібне створити першу систему перевірки орфографії, яка оперувала списком із 10 000 допустимих слів[4]. Ральф Горін (Ralph Gorin), у той час аспірант Ернеста, створив першу справжню програму-спелчекер, яку можна було застосувати до будь-якого англійського тексту взагалі, а не тільки в рамках дослідження, — SPELL для DEC PDP-10 у Лабораторії штучного розуму в Стенфордському університеті (лютий 1971 р.)[5]. Горін написав код SPELL на асемблері, аби пришвидшити її роботу. Він створив орфографічний коректор, який складав список слів, що відрізнялися від даного слова лише однією літерою або перестановкою літер; цей список демонструвався користувачеві.

Горін зробив програму SPELL загальнодоступною, як і більшість програм, створених у Лабораторії SAIL (Stanford Artificial Intelligence Laboratory). Невдовзі вона поширилася всім світом через мережу ARPAnet. Це сталося за 10 років до того, як на ринку з'явилися доступні персональні комп'ютери[6]. SPELL, використані в ній алгоритми й структури даних стимулювали розвиток програми Ispell в Unix.

Перші системи перевірки орфографії широко поширилися на обчислювальних машинах наприкінці 1970-х років. Команда із шести лінгвістів із Джорджтаунського університету розробили першу систему перевірки орфографії для корпорації IBM[7].

Після появи комп'ютерів

[ред. | ред. код]

Перші системи перевірки орфографії  для персональних комп'ютерів з'явилися в 1980 р. на комп'ютерах CP/M та TRS-80. Невдовзі після цього, в 1981 р., було створено орфографічні пакети для IBM PC. Чимало розробників, зокрема Марія Маріані (Maria Mariani)[7], Random House[8], Soft-Art, Microlytics, Proximity, Circle Noetics та Reference Software, поширювали комплекти OEM-програм та продукти для кінцевих користувачів на ринку програмного забезпечення, який швидко зростав, — здебільшого для персональних комп'ютерів (PC), але також і для Apple Macintosh, VAX та UNIX. На персональних комп'ютерах ці системи перевірки орфографії працювали автономно; більшість із них за наявності достатньої пам'яті могли працювати як резидентні програми (TSR) в комплектах програм для обробки текстів на PC.

Утім, ці програми недовго залишалися на ринку окремими програмами: у середині 1980-х рр. розробники популярних текстових редакторів, як-от WordStar і WordPerfect, вбудували системи перевірки орфографії, здебільшого за ліцензіями описаних вище компаній, у розроблювані ними пакети програм. Невдовзі ці системи почали підтримувати не тільки англійську, а й інші європейські, а згодом навіть і азійські мови. Проте процес морфологічної обробки підвищив вимоги до програмного забезпечення, особливо в аглютинативних мовах на кшталт угорської й фінської. Хоча розмір ринку програмного забезпечення для обробки текстів у таких країнах, як, наприклад, Ісландія, не виправдовував інвестиції в розробку систем перевірки орфографії, маркетингова політика деяких компаній, як-от WordPerfect, утім, передбачала локалізацію програм для якнайбільшої кількості ринків.

Браузери

[ред. | ред. код]

У веббраузері Firefox 2.0 передбачено підтримку перевірки орфографії для контенту, створюваного користувачем, як-от під час редагування й набирання тексту у вікі, у вебслужбах електронної пошти на багатьох сайтах, у блогах і на сайтах соціальних мереж. У веббраузерах Google Chrome, Konqueror та Opera, у поштовому клієнті Kmail та програмі для обміну миттєвими повідомленнями Pidgin також є підтримка перевірки орфографії, здійснювана засобами модуля GNU Aspell. В операційній системі Mac OS X перевірка орфографії здійснюється на рівні системи, практично в усіх вбудованих програмах і навіть у програмах сторонніх виробників. Існують також онлайн системи перевірки орфографії українських вебсайтів.

Функціональність

[ред. | ред. код]

Перші спелчекери слугували радше для перевірки, ніж для виправлення: вони не пропонували варіантів замін для неправильно написаних слів. Вони вміли шукати друкарські помилки, але не вміли — логічні й фонетичні. Перед розробниками постало складне питання: як для неправильно написаного слова відібрати із множини можливих виправлень найімовірніші. Потрібно було виявляти структуру слова і застосовувати до неї алгоритми відповідності певним шаблонам.

Щодо розміру словника «дозволених», тобто граматично правильно написаних слів, у теорії здається логічним принцип «що більше, то краще»: що більше «правильних» слів, то менше правильно написаних слів система позначить як помилкові. На практиці ж виявилося, що оптимальним розміром словника (для англійської мови) є 90 000 слів. Якщо словник більше, система починала пропускати неправильно написані слова, оскільки ці «неправильні» слова часто виявлялися реально існуючими у специфічних областях. Наприклад, на основі аналізу корпусу мови виявилося, що слово BAHT — це, найімовірніше, неправильно написане слово BATH або BAT, і дуже рідко йдеться саме про валюту Таїланду — тайський бат (THAI BATH). Тобто, було б доречніше, щоб та невелика кількість людей, які пишуть про тайські бати, стикнулася з помилковими спрацьовуваннями, ніж щоб велика кількість людей, які допустили помилку в словах BATH та BAT, проґавили свої помилки.

Перші системи перевірки орфограми в MS-DOS використовувалися переважно в режимі перевірки текстових фрагментів. Підготувавши документ, користувач сканував текст, шукаючи помилки правопису. Пізніше в таких пакетах програм, як CoAuthor компанії Oracle, який недовго пробув на ринку, додали пакетну обробку. Це дало користувачеві змогу переглянути результати після того, як документ був оброблений, і виправити лише ті слова, які вважалися написаними помилково. Коли об'єм пам'яті та потужність процесорів збільшилися, перевірку правопису почали виконувати у фоновому режимі в інтерактивний спосіб, як-от у програмі Spellbound, випущеній в 1987 році, та Microsoft Word, починаючи з версії Word 95.

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

Перевірка орфографії для мов, відмінних від англійської

[ред. | ред. код]

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

У деяких системах писемносіт не вдається чітко відокремити одне слово від іншого. Така особливість вимагає додаткових алгоритмів розділення слів.

Кожна з цих проблем створює унікальні виклики для неангломовних систем перевірки орфографії.

Контекстно-чутливі системи перевірки орфографії

[ред. | ред. код]

Проводилися дослідження з розробки алгоритмів, здатних розпізнавати неправильно написане слово на основі контексту — інших слів у тому ж реченні або абзаці. Такі алгоритми дають змогу не лише виловлювати слова з помилками, а й пом'якшують негативний ефект від розширення словників, дозволяючи розпізнавати більшу кількість слів. Наприклад, слово baht не розпізнаватиметься як неправильно написане bath, якщо в тому ж абзаці зустрічаєтються слова на кшталт Thai or Thailand.

Найпоширенішим прикладом помилок, виявлених такою системою, є помилки з омофонами, як-от виділені жирним шрифтом слова в такому реченні:

Their coming too sea if its reel.

Найуспішнішим алгоритмом на сьогоднішній день є «Алгоритм виправлення орфографії на основі Winnow»[9] Ендрю Голдінга (Andrew Golding) та Дена Рота (Dan Roth), опублікований у 1999 році, який здатен розпізнавати близько 96 % контекстно-залежних орфографічних помилок, на додаток до звичайних несловесних орфографічних помилок.

Контекстно-залежна перевірка орфографії з'явилася в Microsoft Office 2007[10], а також застосовувалася в неіснуючому нині Google Wave[11].

Існують також системи перевірки граматики, які намагаються знаходити проблеми з граматикою, що виходять за рамки орфографічних помилок, зокрема неправильний вибір слів.

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. U.S. Patent 6618697, Method for rule-based correction of spelling and grammar errors
  2. de Amorim, R.C.; Zampieri, M. (2013) Effective Spell Checking Methods Using Clustering Algorithms. [Архівовано 17 серпня 2017 у Wayback Machine.] Proceedings of Recent Advances in Natural Language Processing (RANLP2013). Hissar, Bulgaria. p. 172—178.
  3. Zampieri, M.; de Amorim, R.C. (2014) Between Sound and Spelling: Combining Phonetics and Clustering Algorithms to Improve Target Word Recovery. Proceedings of the 9th International Conference on Natural Language Processing (PolTAL). Lecture Notes in Computer Science (LNCS). Springer. p. 438—449.
  4. Earnest, Les. The First Three Spelling Checkers (PDF). Stanford University. Архів оригіналу (PDF) за 22 жовтня 2012. Процитовано 10 жовтня 2011. [Архівовано 2012-10-22 у Wayback Machine.]
  5. Peterson, James (Dec 1980). Computer Programs for Detecting and Correcting Spelling Errors (PDF). Процитовано 18 лютого 2011.
  6. Earnest, Les. Visible Legacies for Y3K (PDF). Архів оригіналу (PDF) за 20 липня 2011. Процитовано 18 лютого 2011. [Архівовано 2011-07-20 у Wayback Machine.]
  7. а б Georgetown U Faculty & Staff: The Center for Language, Education & Development. Архів оригіналу за 5 лютого 2009. Процитовано 18 грудня 2008., citation: «Maria Mariani… was one of a group of six linguists from Georgetown University who developed the first spell-check system for the IBM corporation.»
  8. Advertisement (November 1982). The Spelling Bee Is Over. PC Magazine. с. 165. Процитовано 21 October 2013.
  9. Golding, Andrew R.; Roth, Dan (1999). Journal Article. Machine Learning. SpringerLink. 34: 107—130. doi:10.1023/A:1007545901558.
  10. Walt Mossberg (4 січня 2007). Review. Wall Street Journal. Процитовано 24 вересня 2010.
  11. Google Operating System. googlesystem.blogspot.com. 29 травня 2009. Процитовано 25 вересня 2010. Google's Context-Sensitive Spell Checker. 29 травня 2009. Процитовано 25 вересня 2010.