Edit
Regarding TFs of bigrams (as you mentioned in the comments), this might be of interest to you:
ClearAll[getBigramFrequencies]; getBigramFrequencies[text_String] := Module[{words, wordcounts, bigramcounts}, words = StringSplit[ ToLowerCase[ StringDelete[text, PunctuationCharacter | DigitCharacter]]]; If[Length[words] > 0, wordcounts = AssociationThread @@ Transpose[Tally[words]]; bigramcounts = Merge[ KeyValueMap[ {word, count} \[Function] AssociationThread[StringPartition[word, 2, 1], count], wordcounts ], Total]; If[Length[bigramcounts] > 0, bigramcounts/N[Total[bigramcounts]], Association[] ] , Association[] ] ]; texts = ExampleData /@ ExampleData["Text"]; BigramFrequencies = ParallelMap[getBigramFrequencies, texts]; // AbsoluteTiming