Metody komputerowej analizy stylometrycznej tekstów w języku polskim
prowadzący: dr inż. Tomasz Walkowiak
Maciej Baj
spis treści
1. Schemat systemu
2. GUI
3. Model rekordu
4. Proces uczenia
5. Proces klasyfikacji
6. Szczegóły klasyfikacji
7. Wynik klasyfikacji
8. Demonstracja
9. Badania
10. Plany
schemat systemu
Działanie systemu
GUI- klasyfikacja
GUI- uczenie
Model rekordu
Model rekordu
classes: dictionary
average_sentence_complexity: double
base_words: Array<dictionary>
average_word_length: double
type_token_ratio: double
words_count: integer
average_sentence_length: double
parts_of_speech_frequencies: dictionary
hapax_legomana_ratio: double
Proces uczenia
komunikacja z NLP REST API
1. Przesłanie tekstu do systemu
2. Rozpoczęcie procesu WCRFT na wskazanym pliku
3. Cykliczne sprawdzanie statusu zadania
4. Pobranie wyniku w formacie XML
5. Na podstawie tematów wyrazów:
- obliczenie cech numerycznych
- najczęstszych słów
- częstotliwości części mowy
6. Zapis rekordu do bazy danych (wraz z klasami)
Proces klasyfikacji
kroki 1-5: bez zmian
6. Dla każdej zadanej klasy:
- pobierz wszystkie rekordy zawierające daną klasę
- stwórz zbiór uczący oraz zbiór możliwych wyników
- dokonaj klasyfikacji
Szczegóły klasyfikacji
Trójetapowa klasyfikacja
- charakterystyki numeryczne
- częstości występowań części mowy
- ilość wspólnych słów porównywanych zbiorów
Charakterystyki numeryczne
def select_numerical_characteristics(input):
return [
input["average_sentence_length"],
input["average_sentence_complexity"],
input["average_word_length"],
input["type_token_ratio"],
input["hapax_legomana_ratio"]
]
Części mowy
"parts_of_speech_frequencies" : {
"adv" : 0.0194174757281553,
"praet" : 0.0776699029126214,
"imps" : 0.0291262135922330,
"pred" : 0.0097087378640777,
"interp" : 0.1067961165048544,
"subst" : 0.3398058252427185,
"qub" : 0.0388349514563107,
"comp" : 0.0291262135922330,
"conj" : 0.0873786407766990,
"adj" : 0.1359223300970874,
"prep" : 0.0970873786407767,
"fin" : 0.0291262135922330
},
def pick_parts_of_speech_common_for_all(authors_parts_of_speech_frequencies, example_frequencies):
parts_common_for_all = map(lambda x: x.keys(), authors_parts_of_speech_frequencies)
parts_common_for_all.append(example_frequencies.keys())
return set.intersection(*map(set, parts_common_for_all))
tylko część wspólna dla wszystkich rekordów zawierających daną klasę
Najczęstsze słowa
"base_words" : [
{
"i" : 7
},
{
"w" : 4
},
{
"na" : 3
},
{
"się" : 3
},
{
"rok" : 2
},
{
"co" : 2
},
{
"być" : 2
}
....
Wynik
[{
"age": {
"numerical_classification": "mloda polska",
"top_common_words": "mloda polska",
"parts_of_speech_frequencies_classification": "barok"
}
}, {
"male": {
"numerical_classification": "man",
"top_common_words": "man",
"parts_of_speech_frequencies_classification": "man"
}
}, {
"type": {
"numerical_classification": "sonet",
"top_common_words": "hymn",
"parts_of_speech_frequencies_classification": "sonet"
}
}, {
"author": {
"numerical_classification": "Adam Mickiewicz",
"top_common_words": "Jan Kasprowicz",
"parts_of_speech_frequencies_classification": "Adam Mickiewicz"
}
}]
Demonstracja
Badania
skuteczność klasyfikacji w zależności od:
- użytego klasyfikatora
- długości próbki
- skuteczności odgadywania różnych klas
- szczegółowe badanie charakterystyk numerycznych
Plany
konstrukcja systemu
- wprowadzanie dowolnych klas
- implementacja klasyfikacji wykorzystującej częstości występowania słów
- implementacja klasyfikacja w oparciu o najrzadziej występujące słowa
- obróbka tekstu wejściowego
- analiza plików
- zamiana NLP API na coś własnego?
- poprawki w GUI
- udostępnienie systemu do powszechnego użytku
koniec kwietnia
Plany
praca magisterska
- opis systemu
- konstrukcja zbioru uczącego
- przeprowadzenie badań
- opis wyników
maj
- poprawianie pracy magisterskiej
czerwiec
bibliografia
WCRFT- http://nlp.pwr.wroc.pl/redmine/projects/wcrft/wiki
Dziękuję
metody komputerowej analizy stylometrycznej tekstów w języku polskim- podsumowanie
By Maciej Baj
metody komputerowej analizy stylometrycznej tekstów w języku polskim- podsumowanie
- 646