【问题标题】:Finding the most frequently repeated words in the paragraph in c#在c#中查找段落中重复频率最高的单词
【发布时间】:2013-04-12 23:50:28
【问题描述】:

我想在段落中创建一个单词映射。例如;我的字符串是“去面包约翰昨天去是音乐音乐......”。该字符串中的单词映射:music=2,go=2,bread=1,John=1,昨天=1。单词后缀将被视为公共词根。(例如 musics=music)。这个主题我用 C# 编码怎么样?

【问题讨论】:

  • "Go, Google!" 怎么样?是否也应该返回Go=2
  • 您需要一个有效单词列表才能完成此任务。然后你可以使用正则表达式遍历你的单词数组并计算匹配项。
  • 你做了哪些努力?
  • (1) “音乐”和“音乐”有一个共同的前缀,而不是共同的后缀。 (2) 你应该尝试一些东西,看看你是否可以自己做,然后发布一些代码,看看是否有人会帮助你修复代码中的问题。
  • 您在这方面有什么问题?阅读段落?解析单词?跟踪单词?词干?你知道你将如何解决这个问题吗?

标签: c# string parsing


【解决方案1】:

您首先需要一个词干库。 Snowballthis SO 主题中建议似乎是一个不错的起点。

即使使用词干分析器,您无疑也会从一篇小文章中获得大量单词列表,因此跟踪所有这些单词的最佳选择可能是 SQL 数据库。但是,如果您只是暂时需要跟踪这些值,那么一个简单的字符串表可能就可以解决问题。

【讨论】:

    【解决方案2】:

    您可以首先将所有复数形式转换为单(或复数)形式,由您决定,但要保持一致,例如 music=musics。这并不难,因为有 C# 代码可以获取复数形式,例如,参见 post

    然后您可以创建字典:

    Dictionary<string, int> data=new Dictionary<string, int>();
    foreach(string item in YourInputs)
    {
        if(data.ContainsKey(item)
             data[item]++;
        else
             data.Add(item, 1);
    }
    

    【讨论】:

      【解决方案3】:

      关于后缀,这只是寻找s,您可以修改以寻找其他后缀。

      string words = "go bread John yesterday going is music musics";
      List<string> wordroots = words.Split(new [] {" "}, StringSplitOptions.RemoveEmptyEntries).ToList();
      var rootcount = wordroots
          .Select(wr =>
          {
              if (wr.EndsWith("s"))
                  wr = wr.Substring(0, wr.Length - 1);
              return wr;
          })
          .GroupBy(g => g);
      
      foreach (var group in rootcount)
          Console.WriteLine(string.Format("Found word: {0} {1} times.", group.Key, group.Count()));   
      

      【讨论】:

      • 谢谢乔伊。部分解决了您代码中的问题,例如。但是因为它必须是时间 2 因为 go 派生自 go。它是如何工作的?
      • 乔伊,我发现了问题所在。你的代码是对的。其他镜头只要在词的共同词根上加代码就可以理解为附加。例如 if (wr.EndsWith("ing")) wr = wr.Substring(0, wr.Length - 3);
      猜你喜欢
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多