đ TehtĂ€vĂ€t
TehtÀvÀ: Vihapuheen tunnistus
Kouluta Naive Bayes classifier, joka tunnistaa, onko viesti vihapuhetta vai ei. Raportoi tulokset oppimispÀivÀkirjassasi. Valitse joko pienempi tai suurempi datasetti:
- Normaali tehtÀvÀ: gh: hate-speech-and-offensive-language
- Vaikea tehtÀvÀ: Data in Brief: suurempi datasetti
Kuten aina, dokumentoi se, mitÀ opit Naive Bayes algoritmista oppimispÀivÀkirjaasi.
Huomaa, ettÀ sinun ei odoteta kÀyttÀvÀn edistynyttÀ stemmausta. Tarkoitus on ymmÀrtÀÀ, miten Naive Bayes toimii ja miten sitÀ kÀytetÀÀn. Suosi yksinkertaisia ja ymmÀrrettÀviÀ menetelmiÀ.
Warning
Lue tehtĂ€vĂ€nanto dataan liittyvissĂ€ ongelmissa huolellisesti. Esimerkiksi yllĂ€ on esitelty, ettĂ€ sinun tulee tunnistaa, onko viesti vihapuhetta vai ei. Vastaus on siis "KyllĂ€ on" tai "Ei ole". ĂlĂ€ siis tee luokitusta, jossa on useampia luokkia, kuten "vihapuhe", "loukkaava puhe", "ei kumpikaan".
Sen sijaan voi olla perusteltua kokeilla, kuinka koulutetun mallin tarkkuus reagoi siihen, sisÀllytÀtkö loukkaavaksi puheeksi luokitellut viestit "ei kumpikaan"-luokkaan vai et.
VinkkejÀ
Kirjastot
Tulet tarvitsemaan scikit-learn
-kirjastoa. Asenna se uv add scikit-learn
-komennolla; se lisÀtÀÀn pyproject.toml
-tiedostoon. Tutustu ainakin seuraaviin importattuihin luokkiin tai metodeihin:
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB, ComplementNB
from sklearn.metrics import classification_report, accuracy_score, confusion_matrix
Huomaa, ettĂ€ lista ei ole kattava. Kirjoitat oppimispĂ€ivĂ€kirjaa, joten sinun on suositeltavaa tutustua vapaasti aihepiiriin. ĂlĂ€ tyydy vastaamaan kysymykseen vaan ota omistajuus omasta oppimisprosessistasi.
Tip
Jos tutustut myös ml-perusteet-code
-repositorion koodiin â eli siis niihin Allure-testattuihin koodeihin â, kannattaa pohtia, miten kyseisessĂ€ opettajan tekemĂ€ssĂ€ from scratch -koodissa on hoidettu esimerkiksi tekstin vektorisointi. Onko kĂ€ytössĂ€ vastaava tekniikka kuin TfidVectorizer tai CountVectorizer? Tekeekö malli sen itse vai onko se erillinen luokka/funktio kuten scikitin toteutuksessa?
Datan esikÀsittely
Et voi syöttÀÀ dataa sinÀllÀÀn Naive Bayes -malliin. Sinun on ensin aivan vÀhimmillÀÀn muunnettava data numeeriseen muotoon, mutta kenties dataa kannattaa puhdistaa myös muutoin? Voit esimerkiksi haluta:
- Poista erikoismerkit
- Tee tekstistÀ lowercase
- Poista nimimerkit
- Poista yleisimmÀt sanat (usein termillÀ stop words)
- Korvaa urlit sanalla "urlhere" tai riisutulla domain-nimellÀ
EthÀn tee tÀtÀ ensimmÀisellÀ kielimallin ehdottamalla, todennÀköisesti raskaalla tavalla, vaan suosi jotakin, minkÀ ymmÀrrÀt tÀysin. Voit tehdÀ sen kÀsin vaikkapa nÀin:
import re
import pandas as pd
df = pd.read_csv('path_to_your_dataset.csv')
def preprocess_text(text):
# Replace URLs with the word "urlhere"
text = re.sub(r"http\S+|www\S+|https\S+", "urlhere", text, flags=re.MULTILINE)
# Rest of the processing
return text
df['cleaned_tweet'] = df['tweet'].apply(preprocess_text)