require "set"
STOP_WORDS = Set[
"i", "me", "my", "myself", "we", "our", "ours", "ourselves", "you", "your",
"yours", "yourself", "yourselves", "he", "him", "his", "himself", "she", "her",
"hers", "herself", "it", "its", "itself", "they", "them", "their", "theirs",
"themselves", "what", "which", "who", "whom", "this", "that", "these", "those",
"am", "is", "are", "was", "were", "be", "been", "being", "have", "has", "had",
"having", "do", "does", "did", "doing", "a", "an", "the", "and", "but", "if",
"or", "because", "as", "until", "while", "of", "at", "by", "for", "with",
"about", "against", "between", "into", "through", "to", "from", "in", "out",
"on", "off", "over", "further", "then", "here", "there", "when", "where",
"why", "how", "all", "any", "both", "each", "few", "more", "most", "other",
"some", "such", "no", "nor", "not", "only", "own", "same", "so", "than",
"too", "very", "can", "will", "just", "don", "should", "now"
]
def remove_stop_words(str)
words = str.split
filtered = words.reject { |w| STOP_WORDS.include?(w.downcase) }
filtered.join(" ")
end
input = "a c++ and java to python a we if c# then a and aa"
puts "before remove: " + input
puts "after remove: " + remove_stop_words(input)
# run:
#
# before remove: a c++ and java to python a we if c# then a and aa
# after remove: c++ java python c# aa
#