(Беларуская) Вызначэнне мовы тэксту


Извините, этот техт доступен только в “Беларуская” и “Американский Английский”. For the sake of viewer convenience, the content is shown below in this site default language. You may click one of the links to switch the site language to another available language.

Сэрвіс «Вызначэнне мовы тэксту» прызначаны для вызначэння мовы пададзенага на ўваход адвольнага тэксту. На дадзены момант сэрвіс распазнае 5 моў: беларускую, рускую, украінскую, ангельскую і нямецкую.

 

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

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

 

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

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

Рашэнне праблемы распазнавання мовы тэксту вельмі запатрабаванае ў інтэрнэце. Асабліва гэта тычыцца ідэнтыфікацыі мовы карыстальніка, паколькі такая ідэнтыфікацыя, разам з тэхналогіяй геалакацыі, дазваляе здзейсніць тонкую наладку сайта або дадатка пад патрэбы карыстальніка, зрабіць кантэнт максімальна зразумелым і даступным. Наш сэрвіс мае доступ праз API, што робіць яго добрым памочнікам для вэб-распрацоўшчыка.

 

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

Вызначэнне мовы тэксту ажыццяўляецца сэрвісам з дапамогай статыстычнага метаду і метаду прымянення правіл. Прыярытэтнасць статыстыкі над правіламі або правіл над статыстыкай вызначаецца становішчам спецыяльнай пераменнай-тумблера. Магчымасць змянення становішча дадзенага тумблера на дадзены момант схаваная ад карыстальніка, аднак пры неабходнасці яна заўжды можа быць задзейнічана распрацоўшчыкам. Гэтак жа лёгка можа быць зменены парог адчувальнасці алгарытму, мінімальная і максімальная колькасць сімвалаў тэксту, які падлягае апрацоўцы (для забеспячэння прадукцыйнасці да дадзены момант гэтыя параметры роўныя 80 і 1680 адпаведна).

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

 

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

Асноўны алгарытм

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

  • Карыстальніцкі тэкставы ўвод, Text;
  • Мінімальная даўжыня тэкставага ўводу, MinLength. Роўная 80 сімвалам;
  • Максімальная даўжыня тэкставага ўводу, MaxLength. Роўная 1680 сімвалам;
  • Пераменная-тумблер, якая адказвае за выкарыстанне дадатковай сістэмы правіл і выключэнняў, UseRules. Роўная false;
  • Пераменная-тумблер, якая адказвае за прымяненне ў працы з тэкстам толькі правіл (без статыстыкі), UseRulesOnly. Роўная false;
  • Пераменная-тумблер, якая адказвае за прыярытэт правіл над статыстыкай, UseRulesPriory. Роўная true.

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

Крок 1. Праверка ўмовы Text = . Калі ўмова правільная, завяршыць алгарытм з вынікам false.

Крок 2.1. Выдаленне пачатковых і канцавых прабелаў з Text, вызначэнне кадзіроўкі тэксту.

Крок 2.2. Калі даўжыня Text большая за MaxLength, выдаліць з Text усе сімвалы, якія ідуць пасля сімвала пад нумарам MaxLength. Інакш, калі даўжыня Text меншая за MinLength, завяршыць алгарытм з вынікам false.

Крок 2.3. Ператварыць усе сімвалы Text у сімвалы кадзіроўкі UTF-8 і прывесці іх да ніжняга рэгістра.

Крок 3.1. Калі UseRulesOnly = true, прымяніць да Text функцыю вызначэння мовы паводле правіл, запісаць вынік працы функцыі ў пераменную Res, выдаць карыстальніку значэнне пераменнай Res і завяршыць алгарытм. Інакш – перайсці да наступнага кроку.

Крок 3.2. Прымяніць да Text функцыю статыстычнага вызначэння мовы, запісаць вынік працы функцыі ў пераменную Res.

Крок 3.3. Калі UseRules=true, здзейсніць наступныя крокі алгарытму. Інакш – выдаць карыстальніку значэнне пераменнай Res і завяршыць алгарытм.

Крок 3.4. Прымяніць да Text функцыю вызначэння мовы паводле правіл, запісаць вынік працы функцыі ў пераменную ResRules.

Крок 3.5. Калі UseRulesPriory = true, выдаць карыстальніку значэнне пераменнай ResRules і завяршыць алгарытм. Інакш – выдаць карыстальніку значэнне пераменнай Res і завяршыць алгарытм.

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

Функцыя вызначэння мовы паводле правіл

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

  • Карыстальніцкі тэкставы ўвод, апрацаваны ў кроках 2.1. – 2.3. асноўнага алгарытму, Text;
  • Двухмерная матрыца правіл для кожнай мовы, LangRules. Кожны радок матрыцы змяшчае сімвал або камбінацыю сімвалаў, якія характэрныя для той ці іншай мовы;
  • Пераменная-тумблер, якая адказвае за неабходнасць адпаведнасці тэксту ўсім правілам пры вызначэнні мовы тэксту паводле правіл, MatchAllRules. Роўная true.

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

Крок 1. Праверка ўмоў Text = і LangRules = . Калі хаця б адна з умоў выканана, завяршыць алгарытм з вынікам false.

Крок 2. Для кожнага радка матрыцы LangRules выканаць крокі 2.1. – 2.2.

Крок 2.1. Стварыць пераменную Freq для падліку выкананых правіл (гэта значыць выпадкаў знаходжання патрэбных сімвалаў або камбінацый сімвалаў у радку) і ініцыялізаваць значэннем 0.

Крок 2.2. Для кожнага правіла Rule у кожным радку матрыцы LangRules выканаць крокі 2.2.1. – 2.2.3.

Крок 2.2.1. Стварыць пераменную Term і запісаць у яе колькасць уваходжанняў у Text сімвала або камбінацыі сімвалаў, якія адпавядаюць правілу Rule.

Крок 2.2.2. Калі Term > 1, інкрэментаваць Freq.

Крок 2.2.3. Калі MatchAllRules=true, праверыць, ці роўнае значэнне Freq колькасці Rules для дадзенага радка матрыцы LangRules. Калі роўнае, вярнуць назву бягучага радка матрыцы LangRules (г. зн. назву мовы) і завяршыць алгарытм. Інакш – праверыць умову Freq > 0. Калі ўмова правільная, вярнуць назву бягучага радка матрыцы LangRules і завяршыць алгарытм.

Крок 3. Калі ў кроку 2 не адбылося звароту выніку, завяршыць алгарытм з вынікам false.

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

Функцыя статыстычнага вызначэння мовы тэксту

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

  • Карыстальніцкі тэкставы ўвод, апрацаваны ў кроках 2.1. – 2.3. асноўнага алгарытму, Text;
  • Двухмерная матрыца, кожны радок якой змяшчае ўсе сімвалы алфавіту пэўнай мовы, Langs;
  • Двухмерная матрыца для запісу вынікаў працы функцыі для кожнай асобнай мовы, LangRes;
  • Парог адчувальнасці, DetectRange. Роўны 75;
  • Пераменная-тумблер UseStrLenPerLang. Калі роўная true, агульная колькасць сімвалаў алфавіта, якія сустрэліся ў Text, будзе прыярытэтнейшая за суадносіны колькасці сімвалаў, якія сустрэліся, да агульнай колькасці сімвалаў алфавіта мовы, калі роўная false, то наадварот. Роўная true;
  • Пераменная-тумблер ReturnAllResults, якая адказвае за зварот выніку аналізу ўсіх моў замест звароту найлепшага выніку. Роўная false.

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

Крок 1. Калі Text = , завяршыць алгарытм з вынікам false.

Крок 2. Для кожнага радка Lang матрыцы Langs выканаць крокі 2.1. – 2.3.

Крок 2.1. Запісаць у радок LangRes, які адпавядае Lang, значэнне 0. Стварыць пераменную Freq для наступнага запісу колькасці сімвалаў мовы, якія сустрэліся ў Text адзін ці больш разоў, і ініцыялізаваць яе значэннем 0. Стварыць пераменную FullLangSymbols для наступнага запісу агульнай колькасці ўваходжанняў сімвалаў мовы ў Text і ініцыялізаваць яе значэннем 0. Стварыць масіў CurLang і запісаць у яго ўсе сімвалы алфавіта бягучай мовы (якая адпавядае Lang).

Крок 2.2. Для кожнага сімвала LangItem масіву CurLang выканаць крокі 2.2.1. – 2.2.2.

Крок 2.2.1. Стварыць пераменную Temp і запісаць у яе агульную колькасць уваходжанняў сімвала LangItem у Text.

Крок 2.2.2. Калі Temp > 1, інкрэментаваць Freq і павялічыць значэнне FullLangSymbols на велічыню Temp.

Крок 2.3. Калі UseStrLenPerLang = true, запісаць у радок матрыцы LangRes, які адпавядае бягучай мове, значэнне FullLangSymbols, інакш – запісаць у радок матрыцы LangRes, які адпавядае бягучай мове, акругленае ў большы бок значэнне, вылічанае паводле формулы:

[значэнне] = (100 / [колькасць сімвалаў алфавіта CurLang]) * Freq.

Крок 3. Адсартаваць матрыцу LangRes паводле змяншэння значэнняў, запісаных у кроку 2.3.

Крок 4. Калі ReturnAllResults = true, вярнуць усю матрыцу LangRes і завяршыць алгарытм. Інакш – праверыць умову [значэнне верхняга элемента LangRes] DetectRange. Калі ўмова правільная, вярнуць назву мовы, якая адпавядае верхняму радку матрыцы LangRes і завяршыць алгарытм, інакш – вярнуць null і завяршыць алгарытм.

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

 

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

Знешні выгляд інтэрфейсу сэрвіса прадстаўлены на малюнку 1.

Малюнак 1 – Графічны інтэрфейс сэрвіса «Вызначэнне мовы тэксту»

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

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

Пасля націскання на кнопку «Вызначыць мову!» унізе экрана з’яўляецца поле выдачы вынікаў апрацоўкі.

 

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

Сцэнарый 1. Вызначэнне мовы тэставага тэксту

  1. Выбраць тэставы тэкст з дапамогай выпадальнага меню. У выпадку непажаданага змянення зместу тэкставага поля націснуць кнопку «Абнавіць».
  2. Націснуць кнопку «Вызначыць мову!».
  3. Атрымаць вынік (назву вызначанай мовы) у полі выдачы вынікаў.

Сцэнарый 2. Вызначэнне мовы карыстальніцкага тэксту

  1. Націснуць кнопку «Ачысціць» для ачысткі поля ўводу альбо ачысціць поле ўводу ўручную.
  2. Увесці тэкст у поле ўводу.
  3. Націснуць кнопку «Вызначыць мову!».
  4. Атрымаць вынік (назву вызначанай мовы) у полі выдачы вынікаў.

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

Малюнак 2 – Вынік працы сэрвіса «Вызначэнне мовы тэксту»

 

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

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

  • textадвольны ўваходны тэкст памерам ад 80 сімвалаў.

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

$.ajax({

type: “POST”,

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

data:{

text”: “Had I the heavens’ embroidered cloths,

Enwrought with golden and silver light,

The blue and the dim and the dark cloths

Of night and light and the half-light,

I would spread the cloths under your feet:

But I, being poor, have only my dreams;

I have spread my dreams under your feet;

Tread softly because you tread on my dreams.”

},

success: function(msg){ },

error: function() { }

});

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

[

{

text”: “Had I the heavens’ embroidered cloths,

Enwrought with golden and silver light,

The blue and the dim and the dark cloths

Of night and light and the half-light,

I would spread the cloths under your feet:

But I, being poor, have only my dreams;

I have spread my dreams under your feet;

Tread softly because you tread on my dreams.”,

“result”: “en”

}

]

 

Спасылкі на крыніцы

Старонка сэрвісаhttps://corpus.by/LanguageIdentifier/

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