Examples of FilterResult


Examples of de.spotnik.mail.core.filter.FilterResult

        int tokens = 0;
       
        if( !getBrain().isReady())
        {
            // return "UNKNOWN" if bayesian brain is not yet ready
            FilterResult result = new FilterResult("filter.bayes", FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // find top n tokens (abs(.5-prob))
        Token[] bestTokens = new Token[MAX_TOKENS_FOR_DECISION_PG];
        String[] bestTokenNames = new String[MAX_TOKENS_FOR_DECISION_PG];
       
        LOG.debug("start search for best tokens...");
        Tokenizer myTokenizer = getTokenizer();
        synchronized( myTokenizer)
        {
            myTokenizer.reset(mail);
           
            while( myTokenizer.hasNext())
            {
                String token = myTokenizer.next();
                Token t = getBrain().lookUp(token);
               
                if( t != null)
                {
                    double curAbs = Math.abs(0.5 - t.getSpamProbability());
                    int minToken = 0;
                    double minAbs = 1.0;
                   
                    for( int i = 0; i < MAX_TOKENS_FOR_DECISION_PG; i++)
                    {
                        if( bestTokens[i] == null)
                        {
                            minToken = i;
                            tokens++;
                            break;
                        }
                        else if( bestTokenNames[i].equals(token))
                        {
                            curAbs = 0;
                            break;
                        }
                       
                        double abs = Math.abs(0.5 - bestTokens[i].getSpamProbability());
                       
                        if( abs < minAbs)
                        {
                            minAbs = abs;
                            minToken = i;
                        }
                    }
                   
                    if( curAbs > minAbs || bestTokens[minToken] == null)
                    {
                        bestTokens[minToken] = t;
                        bestTokenNames[minToken] = token;
                    }
                }
            }
        }
       
        // log tokens found
        LOG.debug("found best " + tokens + " tokens");
        if( LOG.isDebugEnabled())
        {
            for( int i = 0; i < tokens; i++)
            {
                LOG.debug(bestTokenNames[i] + "   " + bestTokens[i].toString());
            }
        }
       
        if( tokens == 0)
        {
            // if there is no token, return unknown
            FilterResult result = new FilterResult(getId(), FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // do the brain stuff
        double pro = 1.0;
        double contra = 1.0;
        for( int i = 0; i < tokens && bestTokens[i] != null; i++)
        {
            pro *= bestTokens[i].getSpamProbability();
            contra *= 1 - bestTokens[i].getSpamProbability();
        }
       
        // build and return result
        double result = pro / (pro + contra);
        LOG.debug("spam probability = " + result);
        FilterResult filterResult = new FilterResult(getId(), result);
       
        if( LOG.isDebugEnabled())
        {
            // add tokens to FilterResult as comment;
            StringBuffer comment = new StringBuffer();
View Full Code Here

Examples of de.spotnik.mail.core.filter.FilterResult

    }
   
    /* IMailFilter#filter(Message) */
    public FilterResult filter( WrappedMessage message)
    {
        FilterResult result = bayesCheck(message);
       
        LOG.info("Bayesianato result: P(Spam) = " + result.getType());
        return result;
    }
View Full Code Here

Examples of de.spotnik.mail.core.filter.FilterResult

    {
        this.LOG.info("checkMail initiated)");
       
        MegaToken[] tokens = calculateTokens(mail);
       
        FilterResult resultPaulGraham = bayesPaulGrahamCheck(tokens);
        FilterResult resultRobinsonBurton = bayesRobinsonBurtonCheck(tokens);
        FilterResult resultFisherRobinson = bayesFisherRobinsonCheck(tokens);
       
        // combine all results ("one rules all")
        FilterResult filterResult;
        if( resultPaulGraham.getType() == FilterResult.ResultType.REGULAR
            || resultPaulGraham.getType() == FilterResult.ResultType.REGULAR
            || resultPaulGraham.getType() == FilterResult.ResultType.REGULAR)
        {
            // at least one regular (spam/ham) result -> if one is spam, than
            // overall spam
            filterResult = new FilterResult(getId(), resultPaulGraham.isSpam() || resultRobinsonBurton.isSpam()
                                                     || resultFisherRobinson.isSpam() ? 1.0
                                                                                     : 0.0);
        }
        else
        { // only unknowns (or errors but this is rather uncommon)
            filterResult = new FilterResult(getId(), FilterResult.ResultType.UNKNOWN);
        }
       
        filterResult.addSubFilterResult(resultPaulGraham);
        filterResult.addSubFilterResult(resultRobinsonBurton);
        filterResult.addSubFilterResult(resultFisherRobinson);
       
        return filterResult;
    }
View Full Code Here

Examples of de.spotnik.mail.core.filter.FilterResult

        String id = getId() + "_fr";
       
        if( !getBrain().isReady())
        {
            // return "UNKNOWN" if bayesian brain is not yet ready
            FilterResult result = new FilterResult(id, FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // ----- now we can get the best tokens and calculate the result -----
       
        // get best tokens (Fisher-Robinson style: take 0..0.1 and 0.9..1)
        Vector<MegaToken> vBestTokens = new Vector<MegaToken>();
        for( MegaToken token : tokens)
        {
            // notice: tokens are sorted using Math.abs(0.5 -
            // token.getSpamProbability())
            if( token.getToken().getSpamProbability() <= 0.1 || token.getToken().getSpamProbability() >= 0.9)
            {
                vBestTokens.add(token);
            }
            else
            { // everything after this one will be larger -> stop
                break;
            }
        }
       
        // TODO: < x rather than == 0, and x configurable
        if( vBestTokens.size() == 0)
        {
            // if there are no tokens, return unknown
            FilterResult result = new FilterResult(id, FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        MegaToken[] bestTokens = vBestTokens.toArray(new MegaToken[0]);
       
        // log tokens found
        this.LOG.debug("[fr] found best " + bestTokens.length + " tokens");
        if( this.LOG.isDebugEnabled())
        {
            for( MegaToken element : bestTokens)
            {
                this.LOG.debug(element.getName() + "   " + element.toString());
            }
        }
       
        // calculate result (Fisher-Robinson style : inverse chi square)
        double spamminess = 1.0;
        double hamminess = 1.0;
        for( MegaToken token : bestTokens)
        {
            spamminess *= 1 - token.getToken().getSpamProbability();
            hamminess *= token.getToken().getSpamProbability();
        }
        spamminess = inverseChiSquare(-2 * Math.log(spamminess), 2 * bestTokens.length);
        hamminess = inverseChiSquare(-2 * Math.log(hamminess), 2 * bestTokens.length);
       
        double result = (1 + hamminess - spamminess) / 2;
       
        // log result
        this.LOG.debug("[fr] spam probability = " + result);
       
        // build filter result
        FilterResult filterResult = new FilterResult(id, result);
       
        this.LOG.info("[fr] result: P(Spam) = " + filterResult.getType());
       
        return filterResult;
    }
View Full Code Here

Examples of de.spotnik.mail.core.filter.FilterResult

        String id = getId() + "_pg";
       
        if( !getBrain().isReady())
        {
            // return "UNKNOWN" if bayesian brain is not yet ready
            FilterResult result = new FilterResult(id, FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // TODO: < x rather than == 0, and x configurable
        if( tokens.length == 0)
        {
            // if there are no tokens, return unknown
            FilterResult result = new FilterResult(id, FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // ----- now we can get the best tokens and calculate the result -----
       
        // get best tokens (Paul Graham style: just the highest spam / lowest
        // ham tokens)
        MegaToken[] bestTokens = new MegaToken[Math.min(MAX_TOKENS_FOR_DECISION_PG, tokens.length)];
        System.arraycopy(tokens, 0, bestTokens, 0, bestTokens.length);
       
        // log tokens found
        if( this.LOG.isDebugEnabled())
        {
            this.LOG.debug("[pg] found best " + bestTokens.length + " tokens");
            for( MegaToken element : bestTokens)
            {
                this.LOG.debug(element.getName() + "   " + element.toString());
            }
        }
       
        // calculate result (Paul Graham style: naive bayesian)
        double pro = 1.0;
        double contra = 1.0;
        for( MegaToken token : bestTokens)
        {
            pro *= token.getToken().getSpamProbability();
            contra *= 1 - token.getToken().getSpamProbability();
        }
        double result = pro / (pro + contra);
       
        // log result
        this.LOG.debug("[pg] spam probability = " + result);
       
        // build and return filter result
        FilterResult filterResult = new FilterResult(id, result);
       
        this.LOG.info("[pg] result: P(Spam) = " + filterResult.getType());
       
        return filterResult;
    }
View Full Code Here

Examples of de.spotnik.mail.core.filter.FilterResult

        String id = getId() + "_rb";
       
        if( !getBrain().isReady())
        {
            // return "UNKNOWN" if bayesian brain is not yet ready
            FilterResult result = new FilterResult(id, FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // TODO: < x rather than == 0, and x configurable
        if( tokens.length == 0)
        {
            // if there are no tokens, return unknown
            FilterResult result = new FilterResult(id, FilterResult.ResultType.UNKNOWN);
            return result;
        }
       
        // ----- now we can get the best tokens and calculate the result -----
       
        // get best tokens (Burton style: as PG but take often tokens twice)
        MegaToken[] bestTokens = new MegaToken[Math.min(MAX_TOKENS_FOR_DECISION_RB, tokens.length)];
        int counter = 0;
        for( MegaToken token : tokens)
        {
            // store once
            bestTokens[counter++] = token;
            if( counter == bestTokens.length)
            {
                break;
            }
            if( token.getNumber() > 1)
            {
                // store twice
                bestTokens[counter++] = token;
            }
            if( counter == bestTokens.length)
            {
                break;
            }
        }
       
        // log tokens found
        if( this.LOG.isDebugEnabled())
        {
            this.LOG.debug("[rb] found best " + bestTokens.length + " tokens");
            for( MegaToken element : bestTokens)
            {
                this.LOG.debug(element.getName() + "   " + element.toString());
            }
        }
       
        // calculate result (Robinson style: geometric mean)
        double spamminess = 1.0;
        double hamminess = 1.0;
        for( MegaToken token : bestTokens)
        {
            spamminess *= 1 - token.getToken().getSpamProbability();
            hamminess *= token.getToken().getSpamProbability();
        }
        spamminess = 1 - Math.pow(spamminess, 1.0 / bestTokens.length);
        hamminess = 1 - Math.pow(hamminess, 1.0 / bestTokens.length);
       
        double result = (1 + (spamminess - hamminess) / (spamminess + hamminess)) / 2;
       
        // log result
        this.LOG.debug("[rb] spam probability = " + result);
       
        // build filter result
        FilterResult filterResult = new FilterResult(id, result);
       
        this.LOG.info("[rb] result: P(Spam) = " + filterResult.getType());
       
        return filterResult;
    }
View Full Code Here

Examples of edu.brown.workload.filters.Filter.FilterResult

                            continue;
                        }
                        if (xact == null) {
                            throw new Exception("Failed to deserialize transaction trace on line " + xact_ctr);
                        } else if (filter != null) {
                            FilterResult result = null;
                           
                            // It's ok to do this because the real CPU bottleneck is
                            // the JSON deserialization
                            synchronized (filter) {
                                result = filter.apply(xact);
View Full Code Here

Examples of org.apache.sling.ide.filter.FilterResult

                        return true;
                    }

                    String repositoryPath = rai.getResource().getPath();

                    FilterResult filterResult = filter.filter(contentSyncRoot, repositoryPath);

                    if (ignoredResources.isIgnored(repositoryPath)) {
                        return false;
                    }
View Full Code Here

Examples of org.apache.sling.ide.filter.FilterResult

            if (ignoredResources.isIgnored(child.getPath())) {
                continue;
            }

            if (filter != null) {
                FilterResult filterResult = filter.filter(contentSyncRoot, child.getPath());
                if (filterResult == FilterResult.DENY) {
                    continue;
                }
            }
View Full Code Here

Examples of org.apache.sling.ide.filter.FilterResult

//            }
            if (filter==null) {
                Activator.getDefault().getPluginLogger().error("No filter.xml found for "+project);
                return true;
            } else {
                final FilterResult result = filter.filter(ProjectUtil.getSyncDirectoryFile(project), relativeFilePath);
                return result==FilterResult.ALLOW;
            }
        } catch (CoreException e) {
            Logger logger = Activator.getDefault().getPluginLogger();
            logger.error("Could not verify child node allowance: "+this, e);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.