Table of Contents

Studio projektowe 1 (2021)

Tematy są przeznaczone dla kierunku Informatyka I (3 rok)

Organizacja

Rejestracja tematów

:!: Uwaga :!: Przed zarejestrowaniem tematu sprawdź, czy nie jest zajęty. Dany temat może zostać wybrany tylko przez jedną grupę.

Zarejestruj temat

Lista zarezerwowanych tematów

Funkcja do rejestracji jest niestety bardzo prymitywna, za co z góry przepraszam. Działanie jej polega na dopisywaniu kolejnych wierszy do pliku tekstowego. Nanosząc ręcznie poprawki najłatwiej jest mi usuwać całe wiersze.

Lista tematów

1. Repozytorium danych tekstowych (publikacji) na potrzeby NLP

Uwaga to są trzy tematy do realizacji w mniejszych grupach składające się na pewną całość. Na początku należy ustalić wspólne API i ewentualnie utworzyć usługi mock (symulowane usługi nieistniejącego serwisu), a na zakończenie zintegrować.

1.a Backend

Projekt i implementacja bazy danych do przechowywania danych tekstowych oraz metadanych publikacji, a także API typu REST do wprowadzania danych oraz realizacji dostępu. Metadane stałe - tytuł, streszczenie, czasopismo, słowa kluczowe, data publikacji, autorzy, numer ISSN. Dodatkowo metadane zdefiniowane przez użytkownika. W rzeczywistości chodzi o identyfikację terminów i ich lokalizacji w tekście, ale może być ogólnie zapisane jako klucz, wartość. Indeksowanie według słów (wydzielonych za pomocą gotowego tokenizera) i terminów. Możliwość eksportu zawartości.

3-4 osoby

1.b Frontend

Aplikacja webowa pozwalająca na przeglądanie zawartości repozytorium. Wyszukiwanie według metadanych a także słów. Wyświetla listę znalezionych artykułów lub tekst konkretnego artykułu (wybranego z listy). Wybieranie artykułów i eksport.

2-3 osoby

1.c Zasilanie

Oprogramowanie zasilające repozytorium artykułami pobranymi z wybranych źródeł z literaturą medyczną, np.: https://www.ncbi.nlm.nih.gov/pmc/tools/get-full-text/ Należy przeanalizować API i napisać program, który sekwencyjnie będzie pobierał artykuły w wybranym formacie, wyodrębniał tekst i dodawał do repozytorium - wraz z metadanymi.

2-3 osoby

2. Semantyczny leksykon na potrzeby NLP

Celem jest zgromadzenie terminów dotyczących chorób i produktów żywnościowych przez połączenie zawartości WordNet i dodatkowo wprowadzonych informacji. Należy założyć, że terminy mogą być powiązane relacjami, np. chleb jest rodzajem pieczywa, a pieczywa to węglowodany. Terminy w języku angielskim. Należy podjąć decyzję projektowe - czy te relacje mają zostać zakodowane w jakimś specyficznym języku (np. ontologii OWL) czy po prostu składowane w prostej bazie typu SQL Lite. Wymagany jest interfejs dostępu w języku Python. Można posłużyć się różnymi źródłami, np.

3 osoby

3. Ekstrakcja terminów i relacji z tekstu za pomocą spaCy

Spacy to popularna biblioteka do NLP w języku Python. Ma ładny tutorial https://spacy.io/ Celem projektu jest realizacja trzech zadań (język angielski)

  1. Ekstrakcja terminów (obiektów) na podstawie leksykonu - czyli funkcji, która zadecyduje, czy jest to interesujący nas termin
  2. Ekstrakcja relacji zdefiniowanych w postaci manualnie zdefiniowanych reguł. Reguły mogą zostać zakodowane z użyciem informacji o wartościach symboli, częściach mowy oraz funkcji.
  3. Implementacja algorytmu typu snowball - próba dopasowania reguł do znanej relacji. Rozpatrywane są terminy wewnątrz jednego zdania. Pomiędzy terminami są symbole, którym spacy automatycznie przypisze informacje o częściach mowy/zdania. Zbiór takich sekwencji może zostać uaktualniony w postaci reguły.

3 osoby

4. Narzędzie do etykietowania danych tekstowych w formie aplikacji webowej

Etykietowanie terminów i relacji. Przypadki użycia (pełny CRUD):

  1. Ładowanie tekstu
  2. Klikamy lub wybieramy wyraz (lub termin złożony z 2-3 wyrazów) i przypisujemy kategorię (np. organizacja, państwo, choroba, produkt)
  3. Klikamy na dwa zaznaczone terminy i przypisujemy nazwę relacji oraz opcjonalnie jej wagę
  4. Pobieranie adnotacji (etykiet)

Przykład

3-4 osoby

5. Web scraping opinii internetowych

Celem jest pobranie i zapis w bazie danych tekstów opinii wraz z oceną liczbową (gwiazdki). W miarę możliwości także informacje o produktach. Efektem będzie zgromadzenie tekstów (słów i zwrotów) za pomocą których są wyrażane pozytywne i negatywne opinie. Wykorzystanie biblioteki BeautifulSoup lub podobnej. Zakłada się także przeprowadzenie prostej analizy - często występujące pojedyncze słowa lub sekwencje słów powiązane z daną oceną.

3 osoby

6. Webowy czytnik tekstów połączony z text to speech

Użytkownik ładuje plik tekstowy lub PDF (w języku angielskim). System dzieli tekst na fragmenty i wyświetla w oknie równocześnie emituje dźwięk uzyskany za pomocą gTTS. (Google Text to Speech). Zalogowany użytkownik ma dostęp do swoich tekstów, może kontynuować czytanie w miejscu, w którym przerwał.

3 osoby

7. Aplikacja webowa pobierająca dane o kursach walut lub akcji z mikroserwisem do predykcji

Aplikacja pobiera/gromadzi dane o kursach i składuje w bazie danych. Osobnym komponentem jest web serwis na serwerze Flask implementujący kilka-kilkanaście metod predykcji za pomocą gotowych funkcji bibliotek języka Python. Aplikacja umożliwia wyświetlanie kursów oraz porównywanie z przewidywaniami. 3 osoby

8. Ekstrakcja twarzy (dzieci) z filmów wideo

Celem jest zgromadzenie możliwie dużej liczby zdjęć tej samej osoby. Zakłada się wykorzystanie wysokopoziomowej biblioteki face_recognition (Python). Umożliwia ona rozpoznanie twarzy na obrazie oraz stwierdzenie podobieństwa. Niestety, stosunkowo słabo działa w przypadku twarzy dzieci (ujęcia muszą być dość podobne). Idea: wydzielamy klatki z filmu, identyfikujemy położenia twarzy i potencjalnie twarze tej samej osoby - nakładanie się prostokątów i podobieństwo. Wyodrębniamy obrazki twarzy (z pewnym marginesem) i zapisujemy wraz z metadanymi. Projekt obejmuje także organizację pobierania specyficznych filmów wideo z sieci (np. wybranych według słów kluczowych) za pomocą oprogramowania typu YouTube downloader.

3 osoby

9. Symulacja ruchu drogowego z użyciem SUMO

Celem projektu jest automatyzacja procesu przygotowania symulacji ruchu drogowego z użyciem symulatora SUMO:

  1. import mapy OSM dla wybranego obszaru i przetworzenie na dane dla symulatora
  2. zdefiniowanie punktów pomiaru (automatyczne rozmieszczenie dużej liczby punktów pomiaru w zadanym obszarze)
  3. uruchomienie symulacji, zbieranie danych i zapis w bazie danych (może być lekka, typu SQLite)
  4. wizualizacja wyników symulacji dla wybranych dróg

2-3 osoby

10. System do pobieranie i analizy tekstów z Twittera

Zastosowanie gotowej biblioteki (Java lub Python) pozwalającej na pobieranie nowych wpisów w języku polskim z Twittera. Zapis w bazie danych. Przetwarzanie z użyciem spaCy (model języka polskiego). Aplikacja webowa umożliwiająca dostęp i przeglądanie z funkcją grupowania (np.. Zgrupuj tweety z ostatniego tygodnia).

2-3 osoby

11. System do zbierania i analizy treści kanałów RSS

Celem systemu jest regularne zbieranie treści kanałów RSS (i opcjonalnie artykułów) i ich zapis w bazie danych. Analiza ma polegać na wyszukiwaniu podobnych informacji, np. powiązanych z jednym tematem, a także zadanych sekwencji, np. po tym, jak opublikowany został artykuł na temat X, to w czasie mniejszym niż 7 dni pojawił się artykuł na temat Y. Oczekiwane jest opracowanie różnych graficznych widoków wyników.

2-3 osoby

12. Aplikacja definiowania tematów projektów, tworzenia grup i przesyłania dokumentów

2-3 osoby