码迷,mamicode.com
首页 > 编程语言 > 详细

【算法相关】高频词汇统计C#简易版

时间:2016-05-11 08:13:59      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

其实类似于“出现次数统计”的问题,在很多地方都有遇到过,例如,统计一组数字中,每个数字出现的次数。这类统计大多会朝着一个方向发展,那就是大数据。此篇博客只是初级篇,本人在大数据方面一无所知,不做过多讲解。

C#版高频词汇主要需要去面对的事:

  • 将主流格式文档导入至词汇分析系统中,包括.doc, .docx, .pdf , .txt等。
  • 运用正则表达式,将文档中无关内容做过滤,例如文档中出现中文或者一些特殊符号等,这些都无需参与统计的。
  • 将每个单词分离出来,这里其实是个技术难点(很多单词存在时态上的差异,如:go,went,gone。也有先单词存在单复数上的拼写差异。同时也有些单词存在缩写的形式,例如 you’re, don’t等等)
  • 紧接着是要选择一个非常高效的算法,对一份文档的分析可能是比较简单的,可能耗时只有零点几秒,但如果是几千份文档呢?

技术分享

以上列举的问题有以下解决办法:

  • 关于导入不同格式文档的做法还是很简单的,这里就不详细介绍了。
  • 过滤无关字符,使用正则表达式,如:Regex reg = new Regex(@"(?i)\b(?![‘-])[a-z‘-]+(?<![‘-])\b");//去除标点,中文
  • 而对于不同时态问题的解决办法,最直接的是将所有特殊变化类型的列举出来,毕竟这些特殊情况是有限的,不过单复数可能有存在一些问题,而同时还有个问题存在,那就是大小写的问题,如:You 和 you 是同一个单词,如果全部转小写,可能会存在潜在问题,例如有的单词大写是人名,而小写不是表示人名。
  • 而算法方面,我的算法不够优,也希望大神们讲讲思路告诉我,这里有注意到别人的一篇博客,在此引用下别人的做法:
    http://blog.csdn.net/calmreason/article/details/7772132

继续完善的方面有以下几点:

  • 算法方面更高效
  • 利用网络爬虫直接抓取网页内容,统计大量网页上出现的高频词汇,现在做的都是统计针对本地文档,这太狭隘了。

【算法相关】高频词汇统计C#简易版

标签:

原文地址:http://blog.csdn.net/u011669081/article/details/51367326

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!