Дока проєкту: https://docs.google.com/document/d/1Vo4vSQtpU6_YFY0PQ14P9CR2hqSWG-6i7bJb1faypv4/edit?usp=sharing
Таблиця зі списком правил і політиків: https://docs.google.com/spreadsheets/d/1n8Ags5MENNNpxJ-ANYwhFNqPZlHl7U9QguwCOCQ-PZw/edit?usp=sharing
Ми збираємо усі дописи з фейсбука певної публічної особи за однин місяць з 2021 року і один місяць 2022 року (наприклад, березень або квітень).
посилання-на-допис (воно заховане в даті/часі публікації)
Речення допису. Речення допису.
Наступний аззац допису.
Останній абзац допису.
За принципом (місяць-скорочено)_(день).(порядковий-номер-допису-за-день).txt
Приклад: feb_20.1.txt
Усі тексти будуть у теці data
, розсортовані за прізвищами людей, чиї тексти ми збираємо. У теці кожної людини будуть теки old
(для текстів з 2021 року) і new
(тексти з 2022). Кожен допис має бути у своєму окремому файлі, незалежно від його довжини.
Приклад: data/zelenskyi/old/feb_20.1.txt
Будь ласка, будьте із цим максимально уважні, зверніть увагу на формат дати (якщо беремо березень, то буде mar_1
тощо)! Це важливо, щоб усі файли автоматично гарно зчитувались програмою і не викликали проблем.
- Якщо у вас в постах є посилання на сторінки, за можливості варто оформлювати їх отак:
<link>посилання</link>
. - Якщо у ваших постах є посилання на фейсбучні профілі, будь ласка, додавайте їх окремо після згадування:
Микола Тищенко <link>посилання</link>
.
Збираємо їх також.
По 2-3 дописи для кожного періоду. Так ви будете краще уявляти свої дані й зможете перевіряти як на них працює ваше правило (наприклад, чи сходяться формати даних на вході).
Важливо мати не тільки TP випадки, а й TN, щоб бути впевненими, що ваше правило враховує необхідний контекст, і мати потім менше проблем з дебаґинґом. Саме їх ми використовуємо для перевірки функціональности правила.
Для того, щоб цей процес був більш контрольованим, дані для тестів можна складати в окрему теку (наприклад всередині testing
).
Приклад 1:
Перевірка: Чи є імена в тексті?
Текст:
Під час зустрічі з міністром закордонних справ Канади Mélanie Joly розповів про першочергові потреби Сил оборони України.
Результат: ["Mélanie Joly"]
Приклад 2:
Перевірка: та сама
Текст:
Детально обговорили подальшу взаємодію у сфері безпеки та оборони. Підтримка Канади української армії є неоціненною у ці важкі для нас часи.
Результат: []
Зокрема, подивитися на дані, які ви будете отримувати на вході, їх формат, зорієнтуватися, що ви хочете отримати на виході, зрозуміти як потрібно зманіпулювати даними для цього, які бібліотеки вам для цього знадобляться.
У загальному випадку правило має повертати список даних, яке воно зловило.
Приклад 1:
якщо я шукаю імена, то пустий список буде означати, що імен немає (=False, по суті), а список з кількох елементів покаже нам, що результат позитивний, одночасно дозволивши побачити, що саме правило зловило, і зрозуміти, чи є помилка.
Приклад 2:
якщо я шукаю слова у незвичному значенні (сленг абощо), то мені також важливий контекст, тож у цьому випадку можливо краще повертати список словників, де ключем буде слово, яке ми зловили, а значенням — контекст, що покаже нам чи в цільовому значенні слово насправді вжито ([{"бавовна": ["Пишуть про потужну бавовну в Білорусі. Звук вибуху ..."], ...}, ...]
)
-
всі тексти за період (одна велика стрінга з усіх дописів)
"допис_1 ... допис_n"
-
окремі дописи (список стрінгів з дописами)
["допис_1", ..., "допис_n"]
-
окремі речення (список списків дописів, де кінцевою стрінгою будуть окремі речення)
[["речення_1 в допис_1", "речення_2 в допис_1", ...], ..., ["речення_1 в допис_n", "речення_2 в допис_n", ...]]
-
окремі слова (список списків списків)))
[[["слова", "в" , "речення_1", "допис_1"], ["слова", "в" , "речення_2", "допис_1"], ...], ..., [["слова", "в" , "речення_1", "допис_n"], ["слова", "в" , "речення_2", "допис_n"], ...]
Stanza токенізує слова, тому кожне слово — це словник вигляду:
{
"id": 1,
"text": "Використовуємо",
"lemma": "використовувати",
"upos": "VERB",
"xpos": "Vmpip1p",
"feats": "Aspect=Imp|Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin",
"head": 0,
"deprel": "root",
"start_char": 0,
"end_char": 14
}
Якщо ви раніше не працювали із системою git, то перед початком роботи на проєктом раджу пошукати в інтернеті як налаштувати акаунт в github. Також через git config
варто визначити імʼя, прізвище та пошту користувача:ки (вас).
Якщо ви вже клонували проєкт на локальну машину, то прямий порядок приблизно такий:
- Підтягніть останні зміни на гілці main (
git pull
); - Створіть свою гілку для змін (
git branch name_of_the_branch
); - Перейдіть на свою гілку (
git checkout name_of_the_branch
абоgit checkout name_of_the_branch
); - Внесіть зміни, збережіть файли;
- Виберіть, які файли ви хочете додати в коміт (
git add
); - Збережіть коміт в системі (
git commit -m "Опис зміни"
); - Коли ви готові, передайте свої локальні зміни у віддалений репозиторій у ґітгабі (
git push
); - Після того, як ваша робота буде готова, ми додамо її до головної гілки.
Щоб побачити актуальний стан речей з вашими змінами, викликайте git status
.
Якщо ви не впевнені, що правильно все зробите з першого разу, то зробіть бекап файлів в іншій теці перед тим як вводити команди! Це може допомогти не втратити свою роботу, якщо щось піде не за планом.
Загалом, спершу з ґітом спершу може бути заплутано і незрозуміло, але в інтернеті багато відповідей на найрізноманітніші запитання щодо нього.
Бібліотека, яку можна використати для переведення емодзів у читабельну для людини і програми текстову версію: https://pypi.org/project/emoji/
Документація до української версії stanza: https://universaldependencies.org/treebanks/uk_iu/index.html