private static List<WordIncidence> keyPhrases(String searchPhrase, List<WordIncidence> incidences) {
        List<WordIncidence> result = new ArrayList<>();
        double totalIncidences = 0l;
        for (WordIncidence incidence: incidences) {
            totalIncidences += incidence.getIncidence();
        }

        double avgIncidence = totalIncidences/incidences.size();
        double avgDiffSum = 0;
        for (WordIncidence incidence: incidences) {
            double diff = (incidence.getIncidence() - avgIncidence);
            avgDiffSum += (diff * diff);
        }
        double stddev = Math.sqrt(avgDiffSum/incidences.size());

        System.out.println("total=" + totalIncidences + " avg=" + avgIncidence + " stddev=" + stddev);

        for (WordIncidence incidence: incidences) {
            boolean contains = false;
            String[] sphSplit = searchPhrase.split(" ");
            for (String ps: sphSplit) {
                contains = contains || incidence.getWord().toLowerCase().contains(ps);
            }

            if (!contains) {
                if (incidence.getIncidence() > (avgIncidence + 19*stddev)) {
                    result.add(incidence);
                } else if (incidence.getWord().split(" ").length > 1) {
                    if (incidence.getIncidence() > (avgIncidence + stddev))
                        result.add(incidence);
                }
            }
        }

        return result;
    }