content: package com.autovideo.utils;
  
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.Map;
  import java.util.Set;
  
  public class Stopwords {
  	private static Map<Language, Set<String>> stopwords = new HashMap<>();
  	
  	static {
  		stopwords.put(Language.EN, new HashSet<>());
  		stopwords.put(Language.FR, new HashSet<>());
  		stopwords.put(Language.DE, new HashSet<>());
  		
  		stopwords.get(Language.DE).addAll(new HashSet<String>() {{
  			add("aber");
  			add("als");
  			add("am");
  			add("an");
  			add("auch");
  			add("auf");
  			add("aus");
  			add("bei");
  			add("bin");
  			add("bis");
  			add("bist");
  			add("da");
  			add("dadurch");
  			add("daher");
  			add("darum");
  			add("das");
  			add("daß");
  			add("dass");
  			add("dein");
  			add("deine");
  			add("dem");
  			add("den");
  			add("der");
  			add("des");
  			add("dessen");
  			add("deshalb");
  			add("die");
  			add("dies");
  			add("dieser");
  			add("dieses");
  			add("doch");
  			add("dort");
  			add("du");
  			add("durch");
  			add("ein");
  			add("eine");
  			add("einem");
  			add("einen");
  			add("einer");
  			add("eines");
  			add("er");
  			add("es");
  			add("euer");
  			add("eure");
  			add("für");
  			add("hatte");
  			add("hatten");
  			add("hattest");
  			add("hattet");
  			add("hier");
  			add("hinter");
  			add("ich");
  			add("ihr");
  			add("ihre");
  			add("im");
  			add("in");
  			add("ist");
  			add("ja");
  			add("jede");
  			add("jedem");
  			add("jeden");
  			add("jeder");
  			add("jedes");
  			add("jener");
  			add("jenes");
  			add("jetzt");
  			add("kann");
  			add("kannst");
  			add("können");
  			add("könnt");
  			add("machen");
  			add("mein");
  			add("meine");
  			add("mit");
  			add("muß");
  			add("mußt");
  			add("musst");
  			add("müssen");
  			add("müßt");
  			add("nach");
  			add("nachdem");
  			add("nein");
  			add("nicht");
  			add("nun");
  			add("oder");
  			add("seid");
  			add("sein");
  			add("seine");
  			add("sich");
  			add("sie");
  			add("sind");
  			add("soll");
  			add("sollen");
  			add("sollst");
  			add("sollt");
  			add("sonst");
  			add("soweit");
  			add("sowie");
  			add("und");
  			add("unser");
  			add("unsere");
  			add("unter");
  			add("vom");
  			add("von");
  			add("-rrb-");
  			add("-lrb-");
  			add("-lsb-");
  			add("vor");
  			add("wann");
  			add("warum");
  			add("was");
  			add("weiter");
  			add("weitere");
  			add("wenn");
  			add("wer");
  			add("werde");
  			add("werden");
  			add("werdet");
  			add("weshalb");
  			add("wie");
  			add("wieder");
  			add("wieso");
  			add("wir");
  			add("wird");
  			add("wirst");
  			add("wo");
  			add("woher");
  			add("wohin");
  			add("zu");
  			add("zum");
  			add("zur");
  			add("über");
  		}});
  
  		stopwords.get(Language.FR).addAll(new HashSet<String>() {{
  			add("alors");
  			add("au");
  			add("aucuns");
  			add("aussi");
  			add("autre");
  			add("avant");
  			add("avec");
  			add("avoir");
  			add("bon");
  			add("car");
  			add("ce");
  			add("cela");
  			add("ces");
  			add("ceux");
  			add("chaque");
  			add("ci");
  			add("comme");
  			add("comment");
  			add("dans");
  			add("des");
  			add("du");
  			add("dedans");
  			add("dehors");
  			add("depuis");
  			add("devrait");
  			add("doit");
  			add("donc");
  			add("dos");
  			add("début");
  			add("elle");
  			add("elles");
  			add("en");
  			add("encore");
  			add("essai");
  			add("est");
  			add("et");
  			add("eu");
  			add("fait");
  			add("faites");
  			add("fois");
  			add("font");
  			add("hors");
  			add("ici");
  			add("il");
  			add("ils");
  			add("je");
  			add("juste");
  			add("la");
  			add("le");
  			add("les");
  			add("leur");
  			add("là");
  			add("ma");
  			add("maintenant");
  			add("mais");
  			add("mes");
  			add("mine");
  			add("moins");
  			add("mon");
  			add("mot");
  			add("même");
  			add("ni");
  			add("nommés");
  			add("notre");
  			add("nous");
  			add("ou");
  			add("où");
  			add("par");
  			add("parce");
  			add("pas");
  			add("peut");
  			add("peu");
  			add("plupart");
  			add("pour");
  			add("pourquoi");
  			add("quand");
  			add("que");
  			add("quel");
  			add("quelle");
  			add("quelles");
  			add("quels");
  			add("qui");
  			add("sa");
  			add("sans");
  			add("ses");
  			add("seulement");
  			add("si");
  			add("sien");
  			add("son");
  			add("sont");
  			add("sous");
  			add("soyez");
  			add("sujet");
  			add("sur");
  			add("ta");
  			add("tandis");
  			add("tellement");
  			add("tels");
  			add("tes");
  			add("ton");
  			add("tous");
  			add("tout");
  			add("trop");
  			add("très");
  			add("tu");
  			add("voient");
  			add("vont");
  			add("votre");
  			add("vous");
  			add("vu");
  			add("ça");
  			add("étaient");
  			add("état");
  			add("étions");
  			add("été");
  			add("-rrb-");
  			add("-lrb-");
  			add("-lsb-");
  			add("être");
  		}});
  		
  		// Hard-coded stopwords for English 
  		stopwords.get(Language.EN).addAll(new HashSet<String>() {{
  			add("i");
  			add("me");
  			add("my");
  			add("-rrb-");
  			add("-lrb-");
  			add("-lsb-");
  			add("sq");
  			add("ft");
  			add("km");
  			add("-rsb-");
  			add(";");
  			add("lot");
  			add(",");
  			add(".");
  			add(":");
  			add("?");
  			add("!");
  			add("-");
  			add("--");
  			add("==");
  			add("^");
  			add("_");
  			add("+");
  			add("-");
  			add("http");
  			add("#");
  			add("{");
  			add("}");
  			add("myself");
  			add("we");
  			add("our");
  			add("ours");
  			add("ourselves");
  			add("you");
  			add("your");
  			add("yours");
  			add("yourself");
  			add("yourselves");
  			add("he");
  			add("him");
  			add("his");
  			add("himself");
  			add("she");
  			add("her");
  			add("hers");
  			add("herself");
  			add("it");
  			add("its");
  			add("itself");
  			add("they");
  			add("them");
  			add("their");
  			add("theirs");
  			add("themselves");
  			add("what");
  			add("which");
  			add("who");
  			add("whom");
  			add("this");
  			add("that");
  			add("these");
  			add("those");
  			add("am");
  			add("is");
  			add("are");
  			add("was");
  			add("were");
  			add("be");
  			add("been");
  			add("being");
  			add("have");
  			add("has");
  			add("had");
  			add("having");
  			add("do");
  			add("does");
  			add("did");
  			add("doing");
  			add("a");
  			add("an");
  			add("the");
  			add("and");
  			add("but");
  			add("if");
  			add("or");
  			add("because");
  			add("as");
  			add("until");
  			add("while");
  			add("of");
  			add("at");
  			add("by");
  			add("for");
  			add("with");
  			add("about");
  			add("against");
  			add("between");
  			add("into");
  			add("through");
  			add("during");
  			add("before");
  			add("after");
  			add("above");
  			add("below");
  			add("to");
  			add("from");
  			add("up");
  			add("down");
  			add("in");
  			add("out");
  			add("on");
  			add("off");
  			add("over");
  			add("under");
  			add("again");
  			add("further");
  			add("then");
  			add("once");
  			add("here");
  			add("there");
  			add("when");
  			add("where");
  			add("why");
  			add("how");
  			add("all");
  			add("any");
  			add("both");
  			add("each");
  			add("few");
  			add("more");
  			add("most");
  			add("other");
  			add("some");
  			add("such");
  			add("no");
  			add("'s");
  			add("'re");
  			add("'em");
  			add("nor");
  			add("not");
  			add("only");
  			add("own");
  			add("same");
  			add("so");
  			add("than");
  			add("too");
  			add("very");
  			add("s");
  			add("t");
  			add("can");
  			add("will");
  			add("just");
  			add("don");
  			add("should");
  			add("year");
  			add("round");
  			add("now");
  		}});
  	}
  	
  	public static boolean hasAlpha(String text) {
  		return text.matches(".*[a-zA-Z].*");
  	}
  	
  	public static boolean isStopword(String word, Language language) {
  		if (stopwords.get(language) == null)
  			throw new RuntimeException("Unsupported language: " + language);
  			
  		
  		return stopwords.get(language).contains(word.trim().toLowerCase());
  	}
  }
  