-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtrain.py
More file actions
58 lines (42 loc) · 1.88 KB
/
Copy pathtrain.py
File metadata and controls
58 lines (42 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import pandas as pd
import pickle
import tensorflow as tf
from sklearn.preprocessing import LabelEncoder
from keras.utils import to_categorical
from models import model
df = pd.read_csv("data/train.txt",
delimiter=';', header=None, names=['sentence','label'])
val_df = pd.read_csv("data/val.txt",
delimiter=';', header=None, names=['sentence','label'])
ts_df = pd.read_csv("data/test.txt",
delimiter=';', header=None, names=['sentence','label'])
tr_text = df['sentence']
tr_label = df['label']
val_text = val_df['sentence']
val_label = val_df['label']
ts_text = ts_df['sentence']
ts_label = ts_df['label']
encoder = LabelEncoder()
tr_label = encoder.fit_transform(tr_label)
val_label = encoder.transform(val_label)
ts_label = encoder.transform(ts_label)
tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=10000)
tokenizer.fit_on_texts(tr_text)
sequences = tokenizer.texts_to_sequences(tr_text)
tr_x = tf.keras.preprocessing.sequence.pad_sequences(sequences, maxlen=50)
tr_y = to_categorical(tr_label)
sequences = tokenizer.texts_to_sequences(val_text)
val_x = tf.keras.preprocessing.sequence.pad_sequences(sequences, maxlen=50)
val_y = to_categorical(val_label)
sequences = tokenizer.texts_to_sequences(ts_text)
ts_x = tf.keras.preprocessing.sequence.pad_sequences(sequences, maxlen=50)
ts_y = to_categorical(ts_label)
batch_size = 128
epochs = 16
history = model.fit([tr_x, tr_x], tr_y, epochs=epochs, batch_size=batch_size,
validation_data=([val_x, val_x], val_y))
(loss, accuracy, percision, recall) = model.evaluate([ts_x, ts_x], ts_y)
print(f'Loss: {round(loss, 2)}, Accuracy: {round(accuracy, 2)}, Precision: {round(percision, 2)}, Recall: {round(recall, 2)}')
with open('tokenizer-prototype.pkl', 'wb') as tokenizer_file:
pickle.dump(tokenizer, tokenizer_file)
model.save('nlp-prototype.h5')