Is a Bayesian Classifier a good approach for text with numerical meta-data? I'm trying to come up with an approach for detecting scam adverts on my website. I think the problem has a lot in common with detecting spam email (for which a naive Bayesian classifier is a common solution) since many of the signals that indicate a scam will be found within the text of the advert. 
However, there are certain other pieces of information which can be good scam indicators, but I'm not sure if/how a Bayes classifier could use them, because they involve numeric values (with values at the extremes of the range being suspicious) rather than simple binary values corresponding to the presence or absence of a word in the text.
For example, many scam adverts have the price of the item set very low (to attract lots of views), so I would like a lower than normal price to be a strong indicator that the advert may be a scam.
Is Bayes still a good fit for my requirement, if not then could you recommend a different approach?
 A: Sure you can use Naive Bayes. You just have to specify what form the conditional distribution will have.
I can think of a few options:


*

*Binary distribution: Binarize your data using a threshold, and you revert to the problem that you were already solving.

*Parametric distribution: If there is some reasonable parametric distribution, e.g. Gaussian, you can use that.

*Non-parametric distribution: Decide on bins for the numerical data and use those to construct an empirical non-parametric distribution.

A: Naive Bayes classifiers can accommodate numeric variables as well as discrete ones without too much problem.  Essentially there are three approaches: (i) discretise the numeric values (ii) use a parametric model of each numeric attribute (e.g. Gaussian) or (iii) use a non-parametric (e.g. Parzen) density estimator for each numeric attribute.  
see e.g. "Naive Bayes classifiers that perform well with continuous variables" by Remco Bouckaert
A: Naive Bayes can certainly work with numeric attributes as well as discrete ones (modulo concerns about the appropriacy of the assumed distribution as mentioned in other answers). However, you should consider whether you really want to use Naive Bayes, as the non-discriminative methodology will break down more and more as you combine data from various sources, with potentially strong correlations.
If you want to retain a probabilistic interpretation, consider logistic regression, which is an exact analog of Naive Bayes with a discriminative rather than generative objective (see this paper for example: Logistic Regression Vs Naive Bayes. You can find various implementations of it: I like Mallet, if you can use java (accessible as a command-line tool or an API).
If a strict probabilistic interpretation isn't necessary, you can use an SVM. There are many implementations of this, but the de-facto standard (with a variant available in most languages) is LibSVM.
A: You can use numerical values quite easily. In the term P(Feature|scam=Yes) you could put a gaussian distribution or any other empirical distribution from training data (for e.g. sort the data, create a function that returns the percentile of the given input numerical value). Here is a write up describing that
