Contagem de ocorrências de cada elemento em uma List [List [T]] no Scala

Suponha que você tenha

val docs = List(List("one", "two"), List("two", "three"))

onde, por ex. List ("um", "dois") representa um documento que contém os termos "um" e "dois" e você deseja criar um mapa com a frequência do documento para cada termo, ou seja, neste caso

Map("one" -> 1, "two" -> 2, "three" -> 1)

Como você faria isso em Scala? (E de uma maneira eficiente, assumindo um conjunto de dados muito maior).

Meu primeiro pensamento semelhante a Java é usar um mapa mutável:

val freqs = mutable.Map.empty[String,Int]
for (doc <- docs)
  for (term <- doc)
    freqs(term) = freqs.getOrElse(term, 0) + 1

que funciona bem o suficiente, mas eu estou querendo saber como você poderia fazer isso de uma maneira mais "funcional", sem recorrer a um mapa mutável?

questionAnswers(3)

yourAnswerToTheQuestion