I am trying to build a model which would take an email message (in English, extracted subject, and body of the email) and identify if it has a question, request or a proposal. Basically, I would like to see the mails that I've not replied but needs a reply. The model can be used as a "filter" in an email client.

What is the best way to go about it?

Related Work:

Parakweet Lab's Email Intent Data Set

Learning to Classify Email into "Speech Acts"

  • 1
    $\begingroup$ When you're trying to implement some project or working on a project model,you need to give a snippet of what you're working. In order to get effective feedback from the community.For your information check through the guide lines $\endgroup$
    – quintumnia
    Jul 18 '17 at 16:42
  • $\begingroup$ @quintumnia edited and gave a bit more detail. $\endgroup$ Jul 19 '17 at 7:36
  • $\begingroup$ Am working on a similar use case. Could you implement? If yes, please share the solution. $\endgroup$
    – Nitin
    Sep 7 '20 at 15:41

This is a categorization problem, not unlike a spam filter. Instead of flagging an email as spam/not-spam, you are flagging whether it has one of the action categories that you have described.

You'll need to start by assembling a training corpus of example email messages and labeling each example to identify which (maybe multiple) of your categories, if any, are actually present in that email.

Next, pre-process that data to extract features for each message. Examples of typical features include word (or n-gram) counts/frequencies (bag of words). As a shortcut, you might to include as a feature a boolean indicating the presence or absence of a particular word or phrase that you suspect will be predictive of one or more categories. Techniques such as stemming can help reduce the number of words/n-grams being used (often increasing accuracy).

Once you have a dataset that consists of features and labels for each training email (possibly breaking this set up into subsets for training, cross-validation, and testing), you'll want to apply a supervised classification algorithm. You might start with linear classifiers such as logistic regression or SVMs, and if you're unsatisfied with the resulting accuracy then you could advance to neural techniques.

  • $\begingroup$ Can you provide more details so that it becomes more easier to implement? $\endgroup$
    – user9947
    Mar 18 '18 at 8:31
  • $\begingroup$ "straightforward" ? too optimistic $\endgroup$ Mar 18 '18 at 11:17
  • $\begingroup$ Optimistic perhaps, but all is relative. :-) I'll try to expand a bit more on high level steps. As a note to beginners who want to dig deeper into implementation, Andrew Ng's Coursera course might be a good starting point. $\endgroup$
    – G__
    Mar 19 '18 at 2:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.