<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description rdf:about="https://repozitorij.uni-lj.si/IzpisGradiva.php?id=187805"><dc:title>Detecting hate speech using deep learning on smartphones</dc:title><dc:creator>Chestojanov,	Atanas	(Avtor)
	</dc:creator><dc:creator>Pejović,	Veljko	(Mentor)
	</dc:creator><dc:subject>hate speech detection</dc:subject><dc:subject>deep learning</dc:subject><dc:subject>on-device training</dc:subject><dc:subject>personalization</dc:subject><dc:subject>MobileBERT</dc:subject><dc:description>Hate speech detection is usually performed on remote servers. That requires
the text that is being checked to leave the user’s device. This thesis presents
a hate speech detection model that runs on an Android phone, and gives
each user the opportunity to personalize and adapt it to a specific sub group
of offensive language that they are the most sensitive to. All of that, without
any data leaving the device. For that purpose, a MobileBERT encoder is first
trained on the Dynahate dataset to give us a base model. The accuracy of the
base model reaches 0.805 on the test split, with a ROC-AUC of 0.84, with the
majority class baseline sitting at 0.550. After dynamic range quantization,
the classifier’s size sits at 26 MB and classifies a sentence in 64 ms on the test
device. The model is split into a frozen encoder and a classification head with
32,962 parameters. The on-device personalization trains only the head from
the user’s own feedback. Training runs were done on about 220 sentences of
feedback (sentence + label), for ten epochs at batch size 16. That takes under
a second of processor time in total, and it does not increase memory use. The
one step that does cost something is computing the sentence embeddings.
Embedding a set of about 220 sentences takes roughly 5.3 s of processor time,
and that is repeated every time a feedback set is loaded. The measurements
show that feedback containing no examples of the original task erases that
task. For that reason every training set also contains 100 sentences from the
original dataset, which prevents the loss entirely.</dc:description><dc:date>2026</dc:date><dc:date>2026-09-14 15:00:13</dc:date><dc:type>Diplomsko delo/naloga</dc:type><dc:identifier>187805</dc:identifier><dc:language>sl</dc:language></rdf:Description></rdf:RDF>
