What is better to use for mapping value to Map of functions: tail recursion or foreach?
You never use your Map to lookup a filter function by its key. If you don't need any of the keys then you don't really need a Map.

def filterTwitter(str :String) :String =
  List(Twitter.removeRT
      ,Twitter.removeNickName
      ,Twitter.removeURL
      ,Emoticons.removePunctRepetitions
      ,Emoticons.removeHorizontalEmoticons
      ,Emoticons.normalizeEmoticons
      ,Beautify.removeCharRepetitions
      ,Beautify.removeNSpaces
      ).foldRight(str)(_(_))




EXPLANATION

The 1st underscore is an element from the List that is being folded. Because this is a fold Right, it will start with the last element (removeNSpaces) and work toward the head (removeRT).

The 2nd underscore is the result from the previous invocation and it is being passed as an argument to the filter function. (Actually it's a little more complicated than that, but this is an easy way to think about it.)

So this is what's going down:

removeNSpaces(str)             ===&gt; resStr1
removeCharRepetitions(resStr1) ===&gt; resStr2
normalizeEmoticons(resStr2)    ===&gt; resStr3
. . .
removeRT(prevResStr)           ===&gt; finalResStr