计算文本文件中特定单词的频率

joh*_*hnv 1 .net c# regex vb.net text

我有一个文本文件存储为字符串变量.处理文本文件,使其仅包含小写单词和空格.现在,假设我有一个静态字典,它只是一个特定单词列表,我想从文本文件中计算字典中每个单词的频率.例如:

Text file:

i love love vb development although i m a total newbie

Dictionary:

love, development, fire, stone
Run Code Online (Sandbox Code Playgroud)

我想看到的输出类似于以下内容,列出字典单词及其计数.如果它使编码更简单,它也只能列出文本中出现的字典单词.

===========

WORD, COUNT

love, 2

development, 1

fire, 0

stone, 0

============
Run Code Online (Sandbox Code Playgroud)

使用正则表达式(例如"\ w +")我可以获得所有单词匹配,但我不知道如何获得也在字典中的计数,所以我被卡住了.效率在这里至关重要,因为字典非常大(~100,000个单词),文本文件也不小(每个~200kb).

我感谢任何帮助.

Guf*_*ffa 6

您可以通过将字符串分组并将其转换为字典来计算字符串中的单词:

Dictionary<string, int> count =
  theString.Split(' ')
  .GroupBy(s => s)
  .ToDictionary(g => g.Key, g => g.Count());
Run Code Online (Sandbox Code Playgroud)

现在您可以检查字典中是否存在单词,如果存在,则显示计数.


fej*_*oco 5

var dict = new Dictionary<string, int>();

foreach (var word in file)
  if (dict.ContainsKey(word))
    dict[word]++;
  else
    dict[word] = 1;
Run Code Online (Sandbox Code Playgroud)