diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2011-07-19 17:51:28 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2011-07-19 17:51:28 +0400 |
commit | 4335e5a8ce4e23abd9c2977df7f1b13665b80202 (patch) | |
tree | 80283ee9604b850763fb3b3bf9339f694a5c6374 /conf | |
parent | fd4de5a9277d8d4a75b2258b4e1f8cf20c8e0e1d (diff) | |
download | rspamd-4335e5a8ce4e23abd9c2977df7f1b13665b80202.tar.gz rspamd-4335e5a8ce4e23abd9c2977df7f1b13665b80202.zip |
* Add classifiers pre-selection script
Diffstat (limited to 'conf')
-rw-r--r-- | conf/lua/rspamd.classifiers.lua | 48 | ||||
-rw-r--r-- | conf/lua/rspamd.lua | 4 |
2 files changed, 52 insertions, 0 deletions
diff --git a/conf/lua/rspamd.classifiers.lua b/conf/lua/rspamd.classifiers.lua new file mode 100644 index 000000000..e158a29a6 --- /dev/null +++ b/conf/lua/rspamd.classifiers.lua @@ -0,0 +1,48 @@ +-- Detect language of message and selects appropriate statfiles for it + +classifiers['bayes'] = function(classifier, task, is_learn, is_spam) + -- Subfunction for detection of message's language + local detect_language = function(task) + local parts = task:get_text_parts() + for _,p in ipairs(parts) do + local l = p:get_language() + if l then + return l + end + end + return nil + end + + -- Main procedure + language = detect_language(task) + if language then + -- Find statfiles with specified language + local selected = {} + for _,st in pairs(classifier:get_statfiles()) do + local st_l = st:get_param('language') + if st_l and st_l == language then + -- Insert statfile with specified language + table.insert(selected, st) + end + end + if table.maxn(selected) > 1 then + return selected + end + else + -- Language not detected + local selected = {} + for _,st in ipairs(classifier:get_statfiles()) do + local st_l = st:get_param('language') + -- Insert only statfiles without language + if not st_l then + table.insert(selected, st) + end + end + if table.maxn(selected) > 1 then + return selected + end + end + + return nil +end + diff --git a/conf/lua/rspamd.lua b/conf/lua/rspamd.lua index 203862776..822f6447f 100644 --- a/conf/lua/rspamd.lua +++ b/conf/lua/rspamd.lua @@ -82,3 +82,7 @@ end if file_exists('rspamd.local.lua') then dofile('rspamd.local.lua') end + +if file_exists('rspamd.classifiers.lua') then + dofile('rspamd.classifiers.lua') +end |