-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathml.py
More file actions
25 lines (19 loc) · 1.1 KB
/
ml.py
File metadata and controls
25 lines (19 loc) · 1.1 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
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
class Model:
def __init__(self, trainingMail):
emails = [dict(item, mailbox=mb) for mb, items in trainingMail.items() for item in items]
self.subjectVectorizer = CountVectorizer()
subjectX = self.subjectVectorizer.fit_transform([email["subject"] for email in emails])
self.subjectModel = MultinomialNB()
self.subjectModel.fit(subjectX, [email["mailbox"] for email in emails])
self.senderVectorizer = CountVectorizer()
senderX = self.senderVectorizer.fit_transform([email["sender"] for email in emails])
self.senderModel = MultinomialNB()
self.senderModel.fit(senderX, [email["mailbox"] for email in emails])
def sortBySubject(self, email):
newSubjectX = self.subjectVectorizer.transform([email["subject"]])
return self.subjectModel.predict(newSubjectX)[0]
def sortBySender(self, email):
newSenderX = self.senderVectorizer.transform([email["sender"]])
return self.senderModel.predict(newSenderX)[0]