ufal / ParlaMint-UA

Tools and samples of Ukrainian parliamentary proceedings encoded in ParlaMint format
https://ufal.github.io/ParlaMint-UA/
0 stars 0 forks source link

ua / ru language identification #47

Closed AnnaParla closed 1 year ago

AnnaParla commented 1 year ago

ru utterances are sometimes labeled as uk, e.g. seg xml:id="ParlaMint-UA_2012-12-04-m0.u46.p1" xml:lang="uk" Это не внешнее, это облуживание долга. Это процентные выплаты....

Not sure if it is better to comment on them right in the tei files or list them separately.

AnnaParla commented 1 year ago

The algorithm is this:

  1. count all country-specific characters - most frequent determines the language uk/ru
  2. if the word from Ukrainian list then uk
  3. if the word from Russian list then ru
  4. if text is shorter than 50 characters then uk
  5. if nothing above then external perl library determines language (if not uk or ru then uk is used)

so:

uk word: Прошу

https://github.com/ufal/ParlaMint-UA/blob/d3628c162176185dd52c2c4975293e765d87adc6/Scripts/lang-detect.pl#L29

https://github.com/ufal/ParlaMint-UA/blob/76fa47f7344b8f64a28947e01df0ce291141974a/03t-tei-text-lang/2012/ParlaMint-UA_2012-12-04-m0.xml#L299

probably the list of Ukrainian words needs to be reviewed too:

https://github.com/ufal/ParlaMint-UA/blob/d3628c162176185dd52c2c4975293e765d87adc6/Scripts/lang-detect.pl#L22-L37

Now it is clearer :) Yes, the ua list needs to be updated. Can I do it in the file? Or is it better for you if I post an updated list here?

matyaskopp commented 1 year ago

Now it is clearer :) Yes, the ua list needs to be updated. Can I do it in the file? Or is it better for you if I post an updated list here?

create a list here, I will insert them into the script

AnnaParla commented 1 year ago

Frequent ua words: і це ще що як який яка яке якого якому дякую спасибі будь ласка (it is one lexeme in ua) добре хвилина хвилин хвилини хвилинку народний ми ви завершити завершуйте продовжити продовжуйте враховувати врахувати враховано врахована враховані врахуйте передати приймати прийнято хотіти хочете перепрошувати перепрошую вибачатися вибачаюся

AnnaParla commented 1 year ago

Try these pls I will look at the result in an hour or so. Must leave the office now.

matyaskopp commented 1 year ago

https://github.com/ufal/ParlaMint-UA/compare/44d52f54af90df2cece0a73239e5fa8b80bc49df...62b6ca59d5869bf02e92ef4f34f98a33ecec7d92

uk wordlist: https://github.com/ufal/ParlaMint-UA/blob/4e2735478563eb90f3a1928947afc82e7239e106/Scripts/lang-detect.pl#L23-L57

AnnaParla commented 1 year ago

Pls delete the word спасибо from the ua list! It should be only on the ru list. In ua, it is спасибі (with the country specific character).

Pls delete секунд from the ua list, because it is homographic in ua and ru

AnnaParla commented 1 year ago

@AnnaParla check the following after language identification is regenerated:

AnnaParla commented 1 year ago

@AnnaParla check the following after language identification is regenerated:

AnnaParla commented 1 year ago

updated uk list

будь ласка ви вибачатися вибачаюся вибачаюсь вибачте враховувати врахувати враховано врахована враховані врахуйте голово голосування добре дякую завершити завершуйте завершив завершила завершую запрошувати запрошую запрошуйте запросити запросив запросила запросили запрошу ми Микола Князевич народний наступний наступна наступне нема немає пане передати перепрошувати перепрошую приймати прийнято продовжити продовжуйте продовжуй спасибі треба хвилина хвилину хвилин хвилини хвилинку хотіти хочете хто хтось цей ця це цього шановний шановна ще що як який яка яке якого якому яку

AnnaParla commented 1 year ago

updated ru list

администрация администрации Александр Александру Балицкий благодарен благодарна благодарить благодарю благодарите большой большое большая большие большим больше Владимир Владимиру вместе внимание внимания вниманием вопрос вопроса вот всех всем второй вторая второе главное главная главного главному говорите господин госпожа действовать действую деятельность деятельности диалог диалоге диалога договариваться Евгений Евгению ее её если есть еще ещё закончить закончу заканчивайте замечание замечания замечаний замечаниями занять здравствуйте здравствуй и из Иван Ивану или Инна Инне Ирина Ирине их им как когда коллега коллеги коллеге коллегам коллеге коллектив коллективу коллектива конечно Мариуполь Матвиенков Матвиенкову Мелитополь меня мне минута минутой Михаил Михаилу надеяться надеюсь надеемся надейтесь народный народных настаивать Наталья Наталье начать Николай Николаю нужен нужна нужно партия партии передать подать подавать подготовиться подготовились подготовтесь поддержать поддержите поддерживаем поддерживать подтвердить пожалуйста политический политическая понимание понимания пониманием последний последнее последнего предлагать предлагаю председатель Председательствующий применять применяю продолжать продолжает прощение прощения работа работу работать Раиса Раисе регионов регионам Сергей Сергею сессия сессии сказать сказал согласно спасибо сразу также Татьяна Татьяне тебя тебе только тратить уважение уважением уверен уверена Украина Украине фракция фракции фракций фракциях хорошо чтение чтении что Юрий Юрию

matyaskopp commented 1 year ago

eg https://github.com/ufal/ParlaMint-UA/blob/be98f9a2a211d6b006aaf923bbb0f8d21b87e5f3/03t-tei-text-lang/2013/ParlaMint-UA_2013-06-18-m0.xml#L544 did not change because it contains one letter і which is in uk: https://github.com/ufal/ParlaMint-UA/blob/defb834c1e698d12aee8152321107d9ecd5ed81b/Scripts/lang-detect.pl#L308 but no ru specific character: https://github.com/ufal/ParlaMint-UA/blob/defb834c1e698d12aee8152321107d9ecd5ed81b/Scripts/lang-detect.pl#L309

I can skip character checking if there is a long text and no character (but I am unsure what long text is). or expected frequency of characters can be used: https://www.sttmedia.com/characterfrequency-ukrainian

https://www.sttmedia.com/characterfrequency-russian

I can also normalize counting with expected frequency, which will produce more ru speeches. Currently, I am just comparing what is more often uk / ru character and ignoring the frequency of characters in the languages.

matyaskopp commented 1 year ago

I have found another Russian-specific character ё with a relative frequency of 0.2%

matyaskopp commented 1 year ago

Suspicious utterance: https://github.com/ufal/ParlaMint-UA/blob/714e010392fd1e578e3c0777a9a8055275d6ec63/03t-tei-text-lang/2013/ParlaMint-UA_2013-04-16-m0.xml#L905-L908 the second paragraph seems to be in ru, but it is marked as uk because of the last word Дякую

I can implement some word counting - how many words from the ru/uk list is in a paragraph, but it is not a very safe method... or I can mark it as ru if the ru words predominate (e.g. there are 3-times more Russian words then Ukrainian)

AnnaParla commented 1 year ago

I have found another Russian-specific character ё with a relative frequency of 0.2%

It is a good idea to include this character as well, although it is often replaced with e even in authentic ru texts.

AnnaParla commented 1 year ago

Suspicious utterance:

https://github.com/ufal/ParlaMint-UA/blob/714e010392fd1e578e3c0777a9a8055275d6ec63/03t-tei-text-lang/2013/ParlaMint-UA_2013-04-16-m0.xml#L905-L908

the second paragraph seems to be in ru, but it is marked as uk because of the last word Дякую I can implement some word counting - how many words from the ru/uk list is in a paragraph, but it is not a very safe method... or I can mark it as ru if the ru words predominate (e.g. there are 3-times more Russian words then Ukrainian)

Mixed language utterances can be a problem and it would be nice to have a clear pattern of their identification, which will be described in the documentation and elsewhere.

Maybe a ratio of language specific characters based on your statistics makes more sense, since frequencies of the words from the lists can vary a lot. Also, many of these words are more likely to be used in short formulaic utterances. I focused on them in particular because there were many mistakes re language identification in short utterances .

AnnaParla commented 1 year ago

On the other hand, characters do not always help either:

https://github.com/ufal/ParlaMint-UA/blob/714e010392fd1e578e3c0777a9a8055275d6ec63/03t-tei-text-lang/2022/ParlaMint-UA_2022-08-15-m0.xml#L256

The utterance above is in Ukrainian, except for one word тренировочный (in fact, да is more commonly used in this meaning in ru than in uk, but it is not specifically ru).

AnnaParla commented 1 year ago

Out of the utterances above, most problems were solved but:

https://github.com/ufal/ParlaMint-UA/blob/714e010392fd1e578e3c0777a9a8055275d6ec63/03t-tei-text-lang/2013/ParlaMint-UA_2013-06-18-m0.xml#L1015

AnnaParla commented 1 year ago

This one is in Belarussian but we won't label it as be, right?

https://github.com/ufal/ParlaMint-UA/blob/714e010392fd1e578e3c0777a9a8055275d6ec63/03t-tei-text-lang/2020/ParlaMint-UA_2020-09-04-m0.xml#L98

matyaskopp commented 1 year ago

I am now using Russian-word list for longer paragraphs up to 100 characters

AnnaParla commented 1 year ago

The latest changes solved some problems but created others: (I looked here: https://github.com/ufal/ParlaMint-UA/commit/d91eba8ffa9e2c6160bd3c6221f883650016e5c1)

Out of 19 changes 10 were needed, 4 wrongly switched uk to ru, 5 were half ru / half uk anyway, so it did not matter.

Newly updated lists are below, when you have time.

AnnaParla commented 1 year ago

updated ru list

администрация администрации Александр Александру Балицкий благодарен благодарна благодарить благодарю благодарите большой большое большая большие большим больше Владимир Владимиру вместе внимание внимания вниманием вопрос вопроса вот всех всем второй вторая второе главное главная главного главному говорите господин госпожа действовать действую деятельность деятельности диалог диалоге диалога договариваться Евгений Евгению его ее её если есть еще ещё закончить закончу заканчивайте замечание замечания замечаний замечаниями занять здравствуйте здравствуй и из Иван Ивану или Инна Инне Ирина Ирине их им как когда коллега коллеги коллеге коллегам коллеге коллектив коллективу коллектива конечно Мариуполь Матвиенков Матвиенкову Мелитополь меня мне минута минутой Михаил Михаилу надеяться надеюсь надеемся надейтесь народный народных настаивать Наталья Наталье начать Николай Николаю нужен нужна нужно партия партии передать подать подавать подготовиться подготовились подготовтесь поддержать поддержите поддерживаем поддерживать подтвердить пожалуйста политический политическая понимание понимания пониманием последний последнее последнего предлагать предлагаю председатель Председательствующий применять применяю продолжать продолжает прощение прощения работа работу работать Раиса Раисе регионов регионам Сергей Сергею сессия сессии сказать сказал согласно спасибо сразу также Татьяна Татьяне тебя только тратить уважение уважением уверен уверена Украина Украине фракция фракции фракций фракциях хорошо чтение чтении что Юрий Юрию

AnnaParla commented 1 year ago

updated uk list

будемо будь ласка ви вибачатися вибачаюся вибачаюсь вибачте визначатися визначитися визначайтеся враховувати врахувати враховано врахована враховані врахуйте голово голосування добре дякую завершити завершуйте завершив завершила завершую запрошувати запрошую запрошуйте запрошував запросити запросив запросила запросили запрошу зараз йти йдемо ми Микола Князевич надати народний наступний наступна наступне наступного нема немає пане передати перепрошувати перепрошую поважати поважаю приймати прийнято продовжити продовжуйте продовжуй просимо спасибі треба хвилина хвилину хвилин хвилини хвилинку хвилиночку хотіти хочете хто хтось цей ця це цього шановний шановна ще що як який яка яке якого якому яку

matyaskopp commented 1 year ago

I have added a limitation of 250 characters for making decisions based on uk-specific words. For longer automatic tool works better...

AnnaParla commented 1 year ago

All the latest changes are right or can be justified, if they are an uk/ru mix, except for three, which should be in uk.

https://github.com/ufal/ParlaMint-UA/blob/d31c9320040f5b1d7520d5056c1b201b6b22927c/03t-tei-text-lang/2017/ParlaMint-UA_2017-11-14-m0.xml#L1210

https://github.com/ufal/ParlaMint-UA/blob/d31c9320040f5b1d7520d5056c1b201b6b22927c/03t-tei-text-lang/2016/ParlaMint-UA_2016-12-20-m1.xml#L4807

This one even has uk specific characters and no ru specific words or characters. Why is it labeled in ru? https://github.com/ufal/ParlaMint-UA/blob/d31c9320040f5b1d7520d5056c1b201b6b22927c/03t-tei-text-lang/2016/ParlaMint-UA_2016-12-20-m1.xml#L4811

All I can think of from my end is to add some specific words to the uk list (below), but this process can be potentially endless...

How do we establish the accuracy rate of language identification and what percentage is considered good enough for this type of corpora?

AnnaParla commented 1 year ago

newly updated uk list

будемо буде будь ласка ви вибачатися вибачаюся вибачаюсь вибачте визначатися визначитися визначайтеся враховувати врахувати враховано врахована враховані врахуйте голово голосування добре дякую завершити завершуйте завершив завершила завершую запрошувати запрошую запрошуйте запрошував запросити запросив запросила запросили запрошу зараз йти йдемо ми Микола Князевич надати народний наступний наступна наступне наступного нема немає пане передати перепрошувати перепрошую підтвердити підтвердитися поважати поважаю повернення повернутись повернутися повернуться повертаємось повернемся приймати прийнято продовжити продовжуйте продовжуй просимо спасибі тепер треба хвилина хвилину хвилин хвилини хвилинку хвилиночку хотіти хочете хто хтось цей ця це цього шановний шановна ще що як який яка яке якого якому яку

matyaskopp commented 1 year ago

Closing - new issue for code-switching will be opened