package usemp.certh.inference.preprepilot;

import java.util.HashSet;

/**
 *
 * @author gpetkos
 */
public class Stopwords {

	public static final String[] stopwordsArr = { "the", "a", "i", "och", "and", "if", "de", "jag", "de",
			"du", "en", "in", "off", "att", "som", "of", "in", "to", "van", "een", "het", "fr", "och", "new",
			"van", "het", "with", "voor", "a", "about", "above", "after", "again", "against", "all", "am",
			"an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being",
			"below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't",
			"do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from",
			"further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll",
			"he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i",
			"i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself",
			"let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on",
			"once", "only", "or", "other", "ought", "our", "ours	ourselves", "out", "over", "own", "same",
			"shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than",
			"that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's",
			"these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to",
			"too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've",
			"were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while",
			"who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd",
			"you'll", "you're", "you've", "your", "yours", "yourself", "yourselves",
			// Now swedish
			"aderton", "adertonde", "adjö", "aldrig", "alla", "allas", "allt", "alltid", "alltså", "än",
			"andra", "andras", "annan", "annat", "ännu", "artonde", "artonn", "åtminstone", "att", "åtta",
			"åttio", "åttionde", "åttonde", "av", "även", "båda", "bådas", "bakom", "bara", "bäst",
			"bättre", "behöva", "behövas", "behövde", "behövt", "beslut", "beslutat", "beslutit",
			"bland", "blev", "bli", "blir", "blivit", "bort", "borta", "bra", "då", "dag", "dagar",
			"dagarna", "dagen", "där", "därför", "de", "del", "delen", "dem", "den", "deras", "dess",
			"det", "detta", "dig", "din", "dina", "dit", "ditt", "dock", "du", "efter", "eftersom", "elfte",
			"eller", "elva", "en", "enkel", "enkelt", "enkla", "enligt", "er", "era", "ert", "ett", "ettusen",
			"få ", "fanns", "får", "fått ", "fem", "femte", "femtio", "femtionde", "femton", "femtonde",
			"fick", "fin", "finnas", "finns", "fjärde", "fjorton", "fjortonde", "fler", "flera", "flesta",
			"följande", "för", "före", "förlåt", "förra", "första", "fram", "framför", "från",
			"fyra", "fyrtio", "fyrtionde", "gå", "gälla", "gäller", "gällt", "går", "gärna", "gått",
			"genast", "genom", "gick", "gjorde", "gjort", "god", "goda", "godare", "godast", "gör", "göra",
			"gott", "ha", "hade", "haft", "han", "hans", "har", "här", "heller", "hellre", "helst", "helt",
			"henne", "hennes", "hit", "hög", "höger", "högre", "högst", "hon", "honom", "hundra",
			"hundraen", "hundraett", "hur", "i", "ibland", "idag", "igår", "igen", "imorgon", "in", "inför",
			"inga", "ingen", "ingenting", "inget", "innan", "inne", "inom", "inte", "inuti", "ja", "jag",
			"jämfört", "kan	kanske", "knappast", "kom", "komma", "kommer", "kommit", "kr", "kunde",
			"kunna", "kunnat", "kvar", "länge", "längre", "långsam", "långsammare", "långsammast",
			"långsamt", "längst", "långt", "lätt", "lättare", "lättast", "legat", "ligga", "ligger",
			"lika", "likställd", "likställda", "lilla", "lite", "liten", "litet", "man", "många", "måste",
			"med", "mellan", "men", "mer", "mera", "mest", "mig", "min", "mina", "mindre", "minst", "mitt",
			"mittemot", "möjlig", "möjligen", "möjligt", "möjligtvis", "mot", "mycket", "någon",
			"någonting", "något", "några", "när", "nästa", "ned", "nederst", "nedersta", "nedre", "nej",
			"ner", "ni", "nio", "nionde", "nittio", "nittionde", "nitton", "nittonde", "nödvändig",
			"nödvändiga", "nödvändigt", "nödvändigtvis", "nog", "noll", "nr", "nu", "nummer", "och",
			"också", "ofta", "oftast", "olika", "olikt", "om", "oss", "över", "övermorgon", "överst",
			"övre", "på", "rakt", "rätt", "redan", "så", "sade", "säga", "säger", "sagt", "samma",
			"sämre", "sämst", "sedan", "senare", "senast", "sent", "sex", "sextio", "sextionde", "sexton",
			"sextonde", "sig", "sin", "sina", "sist", "sista", "siste", "sitt", "sjätte", "sju", "sjunde",
			"sjuttio", "sjuttionde", "sjutton", "sjuttonde", "ska", "skall", "skulle", "slutligen", "små",
			"smått", "snart", "som", "stor", "stora", "större", "störst", "stort", "tack", "tidig",
			"tidigare", "tidigast", "tidigt", "till", "tills", "tillsammans", "tio", "tionde", "tjugo",
			"tjugoen", "tjugoett", "tjugonde", "tjugotre", "tjugotvå", "tjungo", "tolfte", "tolv", "tre",
			"tredje", "trettio", "trettionde", "tretton", "trettonde", "två", "tvåhundra", "under", "upp",
			"ur", "ursäkt", "ut", "utan", "utanför", "ute", "vad", "vänster", "vänstra	var", "vår",
			"vara", "våra", "varför", "varifrån", "varit", "varken", "värre", "varsågod", "vart",
			"vårt", "vem", "vems", "verkligen", "vi", "vid", "vidare", "viktig", "viktigare", "viktigast",
			"viktigt", "vilka", "vilken", "vilket", "vill",
			// Now Dutch
			"aan", "af", "al", "als", "bij", "dan", "dat", "die", "dit", "een", "en", "er", "had", "heb",
			"hem", "het", "hij", "hoe", "hun", "ik", "in", "is", "je", "kan", "me", "men", "met", "mij",
			"nog", "nu", "of", "ons", "ook", "te", "tot", "uit", "van", "was", "wat", "we", "wel", "wij",
			"zal", "ze", "zei", "zij", "zo", "zou",
			// More english
			"a", "about", "above", "across", "after", "again", "against", "all", "almost", "alone", "along",
			"already", "also", "although", "always", "among", "an", "and", "another", "any", "anybody",
			"anyone", "anything", "anywhere", "are", "area", "areas", "around", "as", "ask", "asked",
			"asking", "asks", "at", "away", "b", "back", "backed", "backing", "backs", "be", "became",
			"because", "become", "becomes", "been", "before", "began", "behind", "being", "beings", "best",
			"better", "between", "big", "both", "but", "by", "c", "came", "can", "cannot", "case", "cases",
			"certain", "certainly", "clear", "clearly", "come", "could", "d", "did", "differ", "different",
			"differently", "do", "does", "done", "down", "down", "downed", "downing", "downs", "during", "e",
			"each", "early", "either", "end", "ended", "ending", "ends", "enough", "even", "evenly", "ever",
			"every", "everybody", "everyone", "everything", "everywhere", "f", "face", "faces", "fact",
			"facts", "far", "felt", "few", "find", "finds", "first", "for", "four", "from", "full", "fully",
			"further", "furthered", "furthering", "furthers", "g", "gave", "general", "generally", "get",
			"gets", "give", "given", "gives", "go", "going", "good", "goods", "got", "great", "greater",
			"greatest", "group", "grouped", "grouping", "groups", "h", "had", "has", "have", "having", "he",
			"her", "here", "herself", "high", "high", "high", "higher", "highest", "him", "himself", "his",
			"how", "however", "i", "if", "important", "in", "interest", "interested", "interesting",
			"interests", "into", "is", "it", "its", "itself", "j", "just", "k", "keep", "keeps", "kind",
			"knew", "know", "known", "knows", "l", "large", "largely", "last", "later", "latest", "least",
			"less", "let", "lets", "like", "likely", "long", "longer", "longest", "m", "made", "make",
			"making", "man", "many", "may", "me", "member", "members", "men", "might", "more", "most",
			"mostly", "mr", "mrs", "much", "must", "my", "myself", "n", "necessary", "need", "needed",
			"needing", "needs", "never", "new", "new", "newer", "newest", "next", "no", "nobody", "non",
			"noone", "not", "nothing", "now", "nowhere", "number", "numbers", "o", "of", "off", "often",
			"old", "older", "oldest", "on", "once", "one", "only", "open", "opened", "opening", "opens", "or",
			"order", "ordered", "ordering", "orders", "other", "others", "our", "out", "over", "p", "part",
			"parted", "parting", "parts", "per", "perhaps", "place", "places", "point", "pointed", "pointing",
			"points", "possible", "present", "presented", "presenting", "presents", "problem", "problems",
			"put", "puts", "q", "quite", "r", "rather", "really", "right", "right", "room", "rooms", "s",
			"said", "same", "saw", "say", "says", "second", "seconds", "see", "seem", "seemed", "seeming",
			"seems", "sees", "several", "shall", "she", "should", "show", "showed", "showing", "shows",
			"side", "sides", "since", "small", "smaller", "smallest", "so", "some", "somebody", "someone",
			"something", "somewhere", "state", "states", "still", "still", "such", "sure", "t", "take",
			"taken", "than", "that", "the", "their", "them", "then", "there", "therefore", "these", "they",
			"thing", "things", "think", "thinks", "this", "those", "though", "thought", "thoughts", "three",
			"through", "thus", "to", "today", "together", "too", "took", "toward", "turn", "turned",
			"turning", "turns", "two", "u", "under", "until", "up", "upon", "us", "use", "used", "uses", "v",
			"very", "w", "want", "wanted", "wanting", "wants", "was", "way", "ways", "we", "well", "wells",
			"went", "were", "what", "when", "where", "whether", "which", "while", "who", "whole", "whose",
			"why", "will", "with", "within", "without", "work", "worked", "working", "works", "would", "x",
			"y", "year", "years", "yet", "you", "young", "younger", "youngest", "your", "yours", "z",
			// More Dutch
			"aan", "aangaande", "aangezien", "achter", "achterna", "afgelopen", "al", "aldaar", "aldus",
			"alhoewel", "alias", "alle", "allebei", "alleen", "alsnog", "altijd", "altoos", "ander", "andere",
			"anders", "anderszins", "behalve", "behoudens", "beide", "beiden", "ben", "beneden", "bent",
			"bepaald", "betreffende", "bij", "binnen", "binnenin", "boven", "bovenal", "bovendien",
			"bovengenoemd", "bovenstaand", "bovenvermeld", "buiten", "daar", "daarheen", "daarin", "daarna",
			"daarnet", "daarom", "daarop", "daarvanlangs", "dan", "dat", "de", "die", "dikwijls", "dit",
			"door", "doorgaand", "dus", "echter", "eer", "eerdat", "eerder", "eerlang", "eerst", "elk",
			"elke", "en", "enig", "enigszins", "enkel", "er", "erdoor", "even", "eveneens", "evenwel", "gauw",
			"gedurende", "geen", "gehad", "gekund", "geleden", "gelijk", "gemoeten", "gemogen", "geweest",
			"gewoon", "gewoonweg", "haar", "had", "hadden", "hare", "heb", "hebben", "hebt", "heeft", "hem",
			"hen", "het", "hierbeneden", "hierboven", "hij", "hoe", "hoewel", "hun", "hunne", "ik", "ikzelf",
			"in", "inmiddels", "inzake", "is", "jezelf", "jij", "jijzelf", "jou", "jouw", "jouwe", "juist",
			"jullie", "kan", "klaar", "kon", "konden", "krachtens", "kunnen", "kunt", "later", "liever",
			"maar", "mag", "meer", "met", "mezelf", "mij", "mijn", "mijnent", "mijner", "mijzelf",
			"misschien", "mocht", "mochten", "moest", "moesten", "moet", "moeten", "mogen", "na", "naar",
			"nadat", "net", "niet", "noch", "nog", "nogal", "nu", "of", "ofschoon", "om", "omdat", "omhoog",
			"omlaag", "omstreeks", "omtrent", "omver", "onder", "ondertussen", "ongeveer", "ons", "onszelf",
			"onze", "ook", "op", "opnieuw", "opzij", "over", "overeind", "overigens", "pas", "precies",
			"reeds", "rond", "rondom", "sedert", "sinds", "sindsdien", "slechts", "sommige", "spoedig",
			"steeds", "tamelijk", "tenzij", "terwijl", "thans", "tijdens", "toch", "toen", "toenmaals",
			"toenmalig", "tot", "totdat", "tussen", "uit", "uitgezonderd", "vaakwat", "van", "vandaan",
			"vanuit", "vanwege", "veeleer", "verder", "vervolgens", "vol", "volgens", "voor", "vooraf",
			"vooral", "vooralsnog", "voorbij", "voordat", "voordezen", "voordien", "voorheen", "voorop",
			"vooruit", "vrij", "vroeg", "waar", "waarom", "wanneer", "want", "waren", "was", "weer", "weg",
			"wegens", "wel", "weldra", "welk", "welke", "wie", "wiens", "wier", "wij", "wijzelf", "zal", "ze",
			"zelfs", "zichzelf", "zij", "zijn", "zijne", "zo", "zodra", "zonder", "zou", "zouden", "zowat",
			"zulke", "zullen", "zult",
			// More Swedish
			"aderton", "adertonde", "adjö", "aldrig", "alla", "allas", "allt", "alltid", "alltså", "än",
			"andra", "andras", "annan", "annat", "ännu", "artonde", "artonn", "åtminstone", "att", "åtta",
			"åttio", "åttionde", "åttonde", "av", "även", "båda", "bådas", "bakom", "bara", "bäst",
			"bättre", "behöva", "behövas", "behövde", "behövt", "beslut", "beslutat", "beslutit",
			"bland", "blev", "bli", "blir", "blivit", "bort", "borta", "bra", "då", "dag", "dagar",
			"dagarna", "dagen", "där", "därför", "de", "del", "delen", "dem", "den", "deras", "dess",
			"det", "detta", "dig", "din", "dina", "dit", "ditt", "dock", "du", "efter", "eftersom", "elfte",
			"eller", "elva", "en", "enkel", "enkelt", "enkla", "enligt", "er", "era", "ert", "ett", "ettusen",
			"få ", "fanns", "får", "fått ", "fem", "femte", "femtio", "femtionde", "femton", "femtonde",
			"fick", "fin", "finnas", "finns", "fjärde", "fjorton", "fjortonde", "fler", "flera", "flesta",
			"följande", "för", "före", "förlåt", "förra", "första", "fram", "framför", "från",
			"fyra", "fyrtio", "fyrtionde", "gå", "gälla", "gäller", "gällt", "går", "gärna", "gått",
			"genast", "genom", "gick", "gjorde", "gjort", "god", "goda", "godare", "godast", "gör", "göra",
			"gott", "ha", "hade", "haft", "han", "hans", "har", "här", "heller", "hellre", "helst", "helt",
			"henne", "hennes", "hit", "hög", "höger", "högre", "högst", "hon", "honom", "hundra",
			"hundraen", "hundraett", "hur", "i", "ibland", "idag", "igår", "igen", "imorgon", "in", "inför",
			"inga", "ingen", "ingenting", "inget", "innan", "inne", "inom", "inte", "inuti", "ja", "jag",
			"jämfört", "kan", "kanske", "knappast", "kom", "komma", "kommer", "kommit", "kr", "kunde",
			"kunna", "kunnat", "kvar", "länge", "längre", "långsam", "långsammare", "långsammast",
			"långsamt", "längst", "långt", "lätt", "lättare", "lättast", "legat", "ligga", "ligger",
			"lika", "likställd", "likställda", "lilla", "lite", "liten", "litet", "man", "många", "måste",
			"med", "mellan", "men", "mer", "mera", "mest", "mig", "min", "mina", "mindre", "minst", "mitt",
			"mittemot", "möjlig", "möjligen", "möjligt", "möjligtvis", "mot", "mycket", "någon",
			"någonting", "något", "några", "när", "nästa", "ned", "nederst", "nedersta", "nedre", "nej",
			"ner", "ni", "nio", "nionde", "nittio", "nittionde", "nitton", "nittonde", "nödvändig",
			"nödvändiga", "nödvändigt", "nödvändigtvis", "nog", "noll", "nr", "nu", "nummer", "och",
			"också", "ofta", "oftast", "olika", "olikt", "om", "oss", "över", "övermorgon", "överst",
			"övre", "på", "rakt", "rätt", "redan", "så", "sade", "säga", "säger", "sagt", "samma",
			"sämre", "sämst", "sedan", "senare", "senast", "sent", "sex", "sextio", "sextionde", "sexton",
			"sextonde", "sig", "sin", "sina", "sist", "sista", "siste", "sitt", "sjätte", "sju", "sjunde",
			"sjuttio", "sjuttionde", "sjutton", "sjuttonde", "ska", "skall", "skulle", "slutligen", "små",
			"smått", "snart", "som", "stor", "stora", "större", "störst", "stort", "tack", "tidig",
			"tidigare", "tidigast", "tidigt", "till", "tills", "tillsammans", "tio", "tionde", "tjugo",
			"tjugoen", "tjugoett", "tjugonde", "tjugotre", "tjugotvå", "tjungo", "tolfte", "tolv", "tre",
			"tredje", "trettio", "trettionde", "tretton", "trettonde", "två", "tvåhundra", "under", "upp",
			"ur", "ursäkt", "ut", "utan", "utanför", "ute", "vad", "vänster", "vänstra", "var", "vår",
			"vara", "våra", "varför", "varifrån", "varit", "varken", "värre", "varsågod", "vart",
			"vårt", "vem", "vems", "verkligen", "vi", "vid", "vidare", "viktig", "viktigare", "viktigast",
			"viktigt", "vilka", "vilken", "vilket", "vill",
			// General facebook and other stopwords
			"facebook", "page", "official"

	};

	public static HashSet<String> stopwords;

	static {
		stopwords = new HashSet<String>();
		for (int i = 0; i < stopwordsArr.length; i++) {
			stopwords.add(stopwordsArr[i]);
		}
	}

	public static final String delimiters = " \r\n\t.,;:'\"()?!/";

	public static boolean isStopword(String word) {
		if (word.length() < 3) { // all words with < 3 words are treated as stopwords?
			return true;
		}
		return stopwords.contains(word.toLowerCase().trim());
	}

}
