# -- Code Cell --
import pandas as pd
train = pd.read_csv("train_data.csv")
test = pd.read_csv("test_data.csv")

# -- Code Cell --
import numpy as np

# -- Code Cell --
y=np.array(train[['toxic','severe_toxic','obscene','insult']].values)
y

# -- Code Cell --
text = train['comment_text']

# -- Code Cell --
from sklearn.feature_extraction.text import TfidfVectorizer

from scipy.sparse import hstack
tfidf_text= TfidfVectorizer(analyzer='word', ngram_range=(1,2))
tfidf_char = TfidfVectorizer(analyzer="char_wb", ngram_range=(3,5))
text_text = tfidf_text.fit_transform(text)
text_char = tfidf_char.fit_transform(text)

# -- Code Cell --
text_c_t = hstack([text_text,text_char])

# -- Code Cell --
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import LinearSVC
clf = OneVsRestClassifier(LinearSVC(C=4))
X_train, X_test, y_train, y_test = train_test_split(text_c_t, y,test_size=0.2,random_state=42)
clf.fit(X_train, y_train)
pred = clf.predict(X_test)

# -- Code Cell --
f1 = f1_score(y_test, pred, average='macro')
f1

# -- Code Cell --
test

# -- Code Cell --
text_test = test['comment_text']
text_text = tfidf_text.transform(text_test)
text_char = tfidf_char.transform(text_test)
text_c_t = hstack([text_text,text_char])
preds = clf.predict(text_c_t)

# -- Code Cell --
z = []
for i in range(len(preds)):
    alabala = []
    for element in preds[i]:
        alabala.append(element)
    z.append(alabala)
z

# -- Code Cell --
out = pd.DataFrame({
    'subtaskID':1,
    'datapointID':test['id'],
    'answer': z
}).to_csv("subs.csv",index=False)

# -- Code Cell --
