Праверка правапісу «ў»


Сэрвіс «Праверка правапісу «ў» распрацаваны для хуткай праверкі вялікіх электронных тэкстаў на беларускай мове з мэтай пошуку і выпраўлення адной з найбольш распаўсюджаных памылак – памылкі ў напісанні літар «у» і «ў».

На ўваход сэрвісу падаецца тэкст на беларускай мове ў звычайным выглядзе. Калі карыстальнік націсне кнопку «Праверыць!», сэрвіс абазначыць магчымыя памылкі двух тыпаў: па-першае, калі літара «у» напісана ў пазіцыі, дзе, верагодна, павінна быць літара «ў»; па-другое, калі напісана літара «ў», дзе, верагодна, павінна быць літара «у».

Асноўныя тэрміны і паняцці

Ў – у нескладовае (кароткае) – 22-я літара беларускага алфавіта. Беларуская кірыліца – адзіная славянская моўная знакавая сістэма, у якой ужываецца дадзеная літара (за выключэннем выпадкаў ужывання літары ва ўкраінскай мовазнаўчай літаратуры). Гук [ў], які абазначаецца літарай «ў», у залежнасці ад месца ў слове і паходжання слова чаргуецца з гукамі [у] [в] і [л]. Больш падрабязна – https://be.wikipedia.org/wiki/%D0%8E.

Практычная каштоўнасць

– Сэрвіс будзе карысны для вырашэння пытанняў аўтаматызацыі вычыткі і рэдагавання тэкстаў на беларускай мове. З гэтай прычыны сэрвіс уключаны ў «Методыку вычыткі электронных тэкстаў вялікага памеру пры дапамозе сэрвісаў Corpus.by» (https://ssrlab.by/5406).

– Таксама сэрвіс будзе карысны для паляпшэння якасці сінтэзу маўлення з дапамогай аўтаматызаваных сістэм. Адным з важных момантаў у сінтэзаванні маўлення з’яўляецца тое, што ўваходны тэкст мусіць не мець арфаграфічных памылак. Іначай, відавочна, вынікам працы сінтэзатара маўлення па тэксце будзе некарэктны гукавы тэкст, які рэжа слых.

Асаблівасці сэрвіса

– У працэсе пошуку магчымых памылак сэрвіс не толькі вызначае, галосны ці зычны знаходзіцца перад «у», але таксама аналізуе сімвалы, якія не з’яўляюцца літарамі, у выпадку, калі літара «у» знаходзіцца ў пачатку слова. Гэтыя сімвалы могуць мець непасрэдны ўплыў на напісанне слова.

– Не ўсе словы беларускай мовы падпарадкоўваюцца агульным правілам напісання літары «ў». З гэтай прычыны ў сэрвісе прадстаўлена магчымасць выкарыстоўваць слоўнік выключэнняў (далучаецца спецыяльнай опцыяй) альбо карыстальніцкі спіс выключэнняў. Сэрвіс апрацоўвае тэкст з аглядкай на дадзеныя мноствы слоў.

– Для напісання абрэвіятур з літарай «у» беларуская мова мае адмысловыя правілы. Але, паколькі сэрвіс не адрознівае абрэвіятуры ад іншых слоў аўтаматычна, для атрымання дакладных вынікаў карыстальніку прапануецца ўвесці абрэвіятуры, якія сустракаюцца ў тэксце, у адпаведнае поле.

– Знакамі прыпынку сэрвіс лічыць наступныя сімвалы: «,», «.», «:», «;», «!», «?», «–», «—», «(», «)». Сімвалы «[», «]», «{», «}», «_», «%», «№», «#», «^», «$», «@» і іншыя для алгарытму працы сэрвіса знакамі прыпынку не з’яўляюцца. Злучок («-») з’яўляецца знакам прыпынку (атаясамліваецца з працяжнікам) толькі ў тым выпадку, калі ён аточаны абапал прабеламі.

Алгарытм працы сэрвіса

Уваходныя дадзеныя алгарытму:

  • Карыстальніцкі тэкставы ўвод, UText;

  • Мноства ўсіх сімвалаў арабскіх лічбаў, асноўных кірылічных і лацінскіх сімвалаў у верхнім і ніжнім рэгістры, LettersAndNumbers;

  • Мноства ўсіх сімвалаў беларускага алфавіта ў верхнім і ніжнім рэгістры, LettersBel, LettersBel LettersAndNumbers;

  • Мноства ўсіх кірылічных і лацінскіх сімвалаў у верхнім рэгістры, Uppercase, Uppercase LettersAndNumbers;

  • Мноства ўсіх кірылічных і лацінскіх сімвалаў у ніжнім рэгістры, Lowercase, Lowercase LettersAndNumbers;

  • Мноства ўсіх літар беларускай мовы, якія абазначаюць галосныя гукі, у верхнім і ніжнім рэгістры, Vovels, Vovels LettersBel;

  • Мноства ўсіх літар беларускай мовы, якія абазначаюць зычныя гукі, у верхнім і ніжнім рэгістры, Consonants, Consonants LettersBel;

  • Мноства знакаў прыпынку, PunctuationMarks;

  • Слоўнік выключэнняў, DicExceptions;

  • Карыстальніцкі спіс слоў-выключэнняў, UserExceptions;

  • Булевая пераменная, якая адказвае за прымяненне слоўніка выключэнняў, BoolDic;

  • Карыстальніцкі спіс абрэвіятур, UserAbbreviations.

Пачатак алгарытму.

Крок 1.1. Разбіўка UText на мноства Lines паводле сімвалаў пераводу радка.

Крок 1.2. Фарміраванне мноства выключэнняў Exceptions. Калі BoolDic = true, Exceptions фарміруецца з дадзеных DicExceptions, калі BoolDic = false – з дадзеных UserExceptions.

Крок 1.3. Фарміраванне мноства абрэвіятур Abbreviations з карыстальніцкага спіса абрэвіятур UserAbbreviations. У дадзенае мноства ўваходзяць усе абрэвіятуры UserAbbreviations, у якіх кожны сімвал Char LettersBel.

Крок 1.4. Стварэнне мностваў ErrU і ErrUn для захавання інфармацыі аб памылковым ужыванні адпаведна літар «у» («У») і «ў» («Ў»), ErrU = , ErrUn = .

Крок 2.1. Разбіўка наступнага па парадку элемента мноства Lines[Z] на двухмерны масіў слоў з раздзяляльнікамі WordsAndSeparators з дапамогай рэгулярнага выразу. «Словам з раздзяляльнікам» лічыцца кожная новая частка Lines[Z], якая складаецца з мноства сімвалаў Char і адпавядае наступнаму правілу: першы Char LettersAndNumbers, наступныя Char LettersAndNumbers (іх можа быць 0 або больш), заключны Char LettersAndNumbers (сустракаецца 0 або больш разоў). Слова Word і раздзяляльнік Separator – гэта асобныя элементы масіву.

Крок 2.2. Калі Lines[Z] = , здзейсніць інкрэментацыю Z і перайсці да кроку 2.1.

Крок 2.3. Калі Word[X] Exceptions, адбываецца інкрэментаванне X і пераход да новага Word[X]. Інакш ажыццяўляецца фарміраванне мноства кантэкстаў Contexts. Кожны элемент мноства Contexts прывязаны да адпаведнага элемента мноства Chars (гл. Крок 2.4.) і складаецца з Y пар «WordSeparator», якія папярэднічаюць дадзенаму элементу, і Y такіх жа пар, якія ідуць пасля дадзенага элемента (0 Y 3, Y N).

Крок 2.4. Разбіўка элементаў WordsAndSeparators на мноства сімвалаў Chars, стварэнне пераменных LastLetter – для захавання Char, які папярэднічае бягучаму Char, і LastSeparator – для захавання сімвала, які раздзяляе бягучае праверанае мноства з папярэднім. LastSeparator можа быць знакам прыпынку, прабелам, а таксама далучаць да сябе адзін ці больш Char LettersAndNumbers & PunctuationMarks.

Крок 2.5. Калі Chars[A] = «у» або «У», прычым Word[X] Abbreviations і Word[X] ≠ «У», здзейсніць крокі 2.5.1 – 2.5.3, інакш перайсці да кроку 2.6.

Крок 2.5.1. Калі A = 0, праверыць, ці LastSeparator PunctuationMarks. Калі так, інкрэментаваць A і перайсці да кроку 2.5. Калі не, праверыць, ці LastLetter Vovels. Калі так, то дадаць да мноства ErrUn пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«у» пасля галоснай «{LastLetter}» без знакаў прыпынку’ (тут і далей змест Comment можа змяняцца ў залежнасці ад мовы карыстальніцкага інтэрфейсу).

Крок 2.5.2. Калі элемент Chars[A-1] зададзены і Chars[A-1] Vovels, праверыць, ці правільна, што элемент Chars[A+1] роўны сімвалам «м», «М», «с» ці «С», а таксама ці правільна, што A+2 складае велічыню мноства Chars. Калі хаця б адна з пералічаных умоў не выканана, то дадаць да мноства ErrUn пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«у» пасля галоснай {LastLetter}’.

Крок 2.5.3. Калі элемент Chars[A-1] зададзены і роўны сімвалу «-» (злучок), то праверыць, ці зададзены элемент Chars[A-2] і ці Chars[A-2] Vovels. Калі абедзве ўмовы выкананыя, то дадаць да мноства ErrUn пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«у» пасля галоснай {LastLetter} і злучка’.

Крок 2.6. Калі Chars[A] = «ў», здзейсніць крокі 2.6.1. – 2.6.5. Інакш перайсці да кроку 2.7.

Крок 2.6.1. Калі A = 0, праверыць, ці LastSeparator PunctuationMarks. Калі так, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«ў» не выкарыстоўваецца пасля знака прыпынку’. Калі не, то праверыць, ці LastLetter Consonants. Калі так, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«ў» пасля зычнай «{LastLetter}» без знакаў прыпынку’.

Крок 2.6.2. Калі элемент Chars[A-1] зададзены і Chars[A-1] Consonants, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«ў» пасля зычнай «{LastLetter}»’.

Крок 2.6.3. Калі элемент Chars[A-1] зададзены і Chars[A-1] = «-» (злучок), то праверыць, ці зададзены элемент Chars[A-2] і ці Chars[A-2] Consonants. Калі так, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘«ў» пасля зычнай «{LastLetter}» і злучка’.

Крок 2.6.4. Калі элемент Chars[A-1] зададзены і Chars[A-1] = «М» або «м», прычым A+2 складае велічыню мноства Chars, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘запазычанае слова на «-ум»’.

Крок 2.6.5. Калі элемент Chars[A-1] зададзены і Chars[A-1] = «С» або «с», прычым A+2 складае велічыню мноства Chars, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘запазычанае слова на «-ус»’.

Крок 2.7. Калі Chars[A] = «Ў», прычым хаця б адзін элемент мноства Chars Lowercase, то дадаць да мноства ErrU пяцёрку <LastLetter, LastSeparator, Chars[A], Context[Chars[A]], Comment>, дзе Comment = ‘ВЯЛІКАЯ «Ў» ДАЗВАЛЯЕЦЦА ТОЛЬКІ Ў ТЭКСТАХ, ДЗЕ ЎСЕ СЛОВЫ ПІШУЦЦА ВЯЛІКІМІ ЛІТАРАМІ’.

Крок 2.8. Калі дасягнуты апошні элемент мноства Chars, абнуліць A і задаць новае значэнне пераменнай LastLetter = Chars[B], дзе B – велічыня мноства Chars, а LastSeparator зрабіць роўным парнаму элементу бягучага элемента Words масіву WordsAndSeparators. Калі пры гэтым дасягнуты апошні элемент масіву WordsAndSeparators, інкрэментаваць Z, абнуліць X і A і перайсці да кроку 2.1. Калі апошні элемент мноства Chars не дасягнуты, то здзейсніць інкрэментацыю A і перайсці да кроку 2.5. Калі дасягнуты апошні элемент мноства Lines, перайсці да кроку 3.

Крок 3. Паслядоўна вывесці на экран змест мностваў ErrUn і ErrU.

Канец алгарытму.

Апісанне інтэрфейсу карыстальніка

Графічны інтэрфейс сэрвіса прадстаўлены на малюнку 1.

Малюнак 1 – Графічны інтэрфейс сэрвіса «Праверка правапісу «ў»

Інтэрфейс мае наступныя вобласці:

  • Поле для карыстальніцкага ўводу тэксту для праверкі

  • Поле «Выключэнні» для карыстальніцкага ўводу выключэнняў

  • Опцыя «Слоўнік выключэнняў» (далучае да праверкі слоўнік выключэнняў, які мае прыярытэт над зместам поля «Выключэнні»)

  • Поле для ўводу абрэвіятур, якія могуць сустрэцца ў тэксце

  • Кнопка «Праверыць!»: па націсканні дадзенай кнопкі карыстальнік атрымлівае вынік апрацоўкі тэксту сэрвісам

Палі ўводу тэксту для праверкі і ўводу выключэнняў забяспечаны кнопкамі «Абнавіць» (вяртанне дадзеных па змаўчанні) і «Ачысціць» (выдаленне ўсіх дадзеных).

Карыстальніцкія сцэнары працы з сэрвісам

Сцэнар 1. Атрыманне дадзеных пра памылковае ўжыванне літар «у» («У») і «ў» («Ў») з апорай на карыстальніцкі спіс выключэнняў

1. Увесці з клавіятуры ці скапіраваць з буфера абмену тэкст у адпаведнае поле ўводу.

2. Увесці ўласны спіс выключэнняў у поле «Выключэнні» ці дапоўніць/зменшыць спіс, прапанаваны па змаўчанні.

3. Пераканацца, што сцяжок «Слоўнік выключэнняў» зняты (калі не, то зняць яго).

4. Пры неабходнасці адрэдагаваць змест поля «Абрэвіятуры ў тэксце».

5. Націснуць кнопку «Праверыць!» і атрымаць вынікі.

Сцэнар 2. Атрыманне дадзеных пра памылковае ўжыванне літар «у» («У») і «ў» («Ў») з апорай на слоўнік выключэнняў

1. Увесці з клавіятуры ці скапіраваць з буфера абмену тэкст у адпаведнае поле ўводу.

2. Пераканацца, што сцяжок «Сслоўнік выключэнняў» адзначаны (калі не, то адзначыць яго).

3. Пры неабходнасці адрэдагаваць змест поля «Абрэвіятуры ў тэксце».

4. Націснуць кнопку «Праверыць!» і атрымаць вынікі.

Магчымы вынік працы сэрвіса прадстаўлены на малюнку 2.

Малюнак 2 – вынік працы сэрвіса «Праверка правапісу «ў»

 

Доступ да сэрвіса праз API

Для доступу да сэрвіса «Праверка правапісу «ў» праз API неабходна адправіць AJAX-запыт тыпу POST на адрас https://corpus.by/ShortUSpellChecker/api.php. Праз масіў data перадаюцца наступныя параметры:

  • inputText — адвольны ўваходны тэкст на беларускай мове.
  • exceptions — спіс выключэнняў.
  • abbreviations — спіс абрэвіятур.

Прыклад AJAX-запыту:

$.ajax({

type: “POST”,

url: “https://corpus.by/ShortUSpellChecker/api.php”,

data:{

inputText“: “Кот ў ботах.

На Ўкраіне паўднёва-усходні вецер.

Тата любіць бульбў.”,

exceptions“: “авіяшоу акварыум”,

abbreviations“: “УНР УДК“

},

success: function(msg){ },

error: function() { }

});

Сервер верне JSON-масіў з уваходным тэкстам (параметр text), табліцу выпадкаў памылковага ўжывання літары «ў» (параметр res_unc) і табліцу выпадкаў памылковага ўжывання літары «у» (параметр res_uc). Напрыклад, па вышэй прыведзеным AJAX-запыце будзе сфарміраваны наступны адказ:

[

{

“text”: “Кот ў ботах.

На Ўкраіне паўднёва-усходні вецер.

Тата любіць бульбў.”,

“res_unc“: “<table class=”pale” width=”100%”><tbody><tr><td width=”50%” valign=”top”><b>Сустрэлася</b></td><td width=”50%” valign=”top”><b>Каментар</b></td></tr><tr><td width=”50%” valign=”top”>«<font color=”red”>а-у</font>»: …ботах.

На Ўкраіне паўднёв<font color=”red”>а-у</font>сходні вецер.

Тата любіць …”</td><td width=”50%” valign=”top”> <i>(«у» пасля галоснай «а» і злучка)</i></td></tr></tbody></table>”,

“res_uc“: “<table class=”pale” width=”100%”><tbody><tr><td width=”50%” valign=”top”><b>Сустрэлася</b></td><td width=”50%” valign=”top”><b>Каментар</b></td></tr><tr><td width=”50%” valign=”top”>«<font color=”red”>т ў</font>»: …Ко<font color=”red”>т ў</font> ботах.

На Ўкраіне …”</td><td width=”50%” valign=”top”> <i>(«ў» пасля зычнай «т» без знакаў прыпынку)</i></td></tr><tr><td width=”50%” valign=”top”>«<font color=”red”>Ў</font>»: …ў ботах.

На <font color=”red”>Ў</font>краіне паўднёва-усходні вецер.

Тата …”</td><td width=”50%” valign=”top”> <i>(ВЯЛІКАЯ «Ў» ДАЗВАЛЯЕЦЦА ТОЛЬКІ Ў ТЭКСТАХ, ДЗЕ ЎСЕ СЛОВЫ ПІШУЦЦА ВЯЛІКІМІ ЛІТАРАМІ)</i></td></tr><tr><td width=”50%” valign=”top”>«<font color=”red”>бў</font>»: …вецер.

Тата любіць буль<font color=”red”>бў</font>.…”</td><td width=”50%” valign=”top”> <i>(«ў» пасля зычнай «б»)</i></td></tr></tbody></table>”

}

]

Старонка сэрвісаhttps://corpus.by/ShortUSpellChecker/?lang=be

Перакрыжаваныя спасылкі

  1. Гецэвіч, Ю.С. Камп’ютарна-лінгвістычныя сэрвісы www.corpus.by для аўтаматычнай апрацоўкі тэкстаў / Я.С. Качан, С.І. Лысы, Ю.С. Гецэвіч, Г.Р. Станіславенка, А.В. Гюнтар // Нацыянальна-культурны кампанент у літаратурнай і дыялектнай мове : зб. навук. арт. / Брэсц. дзярж. ун-т імя А. С. Пушкіна ; рэдкал.: С. Ф. Бут-Гусаім [і інш.]. – Брэст : БрДУ, 2016. — C. 93-104.
  2. Казлоўская, Н.Д. Выкарыстанне камп’ютарна-лінгвістычных рэсурсаў платформы corpus.by пры перакладзе Кодэкса аб шлюбу і сям’і / Н.Д. Казлоўская, Г.Р. Станіславенка, А.В. Крывальцэвіч, М.У. Марчык, А.У. Бабкоў, І.В. Рэентовіч, Ю.С. Гецэвіч // Межкультурная коммуникация и проблемы обучения иностранному языку и переводу : сб. науч. ст. / редкол. : М.Г. Богова (отв. ред), Т.В. Бусел, Н.П. Грицкевич [и др.]. — Минск : РИВШ, 2017. — C. 137-142.
  3. Казлоўская, Н.Д. Этапы і асаблівасці перакладу юрыдычнай лексікі на прыкладзе Кодэкса аб шлюбе і сям’і з выкарыстаннем камп’ютарна-лінгвістычных рэсурсаў / Н.Д. Казлоўская, А.У. Бабкоў, Ю.С. Гецэвіч, А.В. Крывальцэвіч, Г.Р. Станіславенка, М.У. Марчык, І.В. Рэентовіч // Лингвистика, лингводидактика, лингвокультурология: актуальные вопросы и перспективы развития : материалы I Респ. науч.-практ. конф. с междунар. участием, Минск, 23–24 февр. 2017 г. / БГУ, факультет социокультурных коммуникаций ; редкол. : О.Г. Прохоренко (отв. ред.) [и др.]. — Минск : Изд. центр БГУ, 2017. — C. 189-191.
  4. Станіславенка, Г.Р. Рэдагаванне электронных масіваў тэкстаў на беларускай мове з выкарыстаннем камп’ютарна-лінгвістычных сэрвісаў платформы www.corpus.by / Г.Р. Станіславенка, С.І. Лысы, Ю.С. Гецэвіч // Карповские научные чтения / БГУ ; под ред. А.И. Головня [и др.]. — Минск : ИВЦ Минфина, 2016. — C. 262-267.
  5. Марчык, М.У. Вычытка тэксту вялікага памеру на беларускай мове / М.У. Марчык, С.І. Лысы, Ю.С. Гецэвіч // Лингвистика, лингводидактика, лингвокультурология: актуальные вопросы и перспективы развития : материалы II Междунар. науч.-практ. конф., Минск, 1–2 марта 2018 г. / редкол. : О. Г. Прохоренко (отв. ред.) [и др.]. — Минск : Издательский центр БГУ, 2018. — C. 58-63.
  6. Марчык, М.У. Вычытка і генерацыя тэкстаў вялікага памеру на беларускай мове / М.У. Марчык, Г.Р. Станіславенка, С.І. Лысы, Ю.С. Гецэвіч // Развитие информатизации и государственной системы научно-технической информации (РИНТИ-2017) : доклады XVI Международной конференции, Минск, 16 ноября 2017 г. / ОИПИ НАН Беларуси ; под науч. ред. А.В. Тузиков, Р.Б. Григянец, В.Н. Венгеров. — Минск : ОИПИ НАН Беларуси, 2017. — C. 305-310.

Калі Вы знайшлі ў тэксце памылку правапісу, калі ласка, выдзеліце гэты тэкст і націсніце Ctrl+Enter.