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

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

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

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

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

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

比特币高频交易的实战简易版

将比特币高频交易简单化,以下的模式可以一战. 假设价格中轴线为2250元,有5个比特币和11250元资金,可以采取以下方式进行. 先下10个主单,成交后在10元的差价出挂出副单,副单成交后再挂出主单,循环进行: 1.先在2390埋一个卖单,成交后马上在2380埋一个买单,成交后再在2390埋一个卖单,依次循环. 2.先在2340埋一个卖单,成交后马上在2330埋一个买单,成交后再在2340埋一个卖单,依次循环. 3.先在2300埋一个卖单,成交后马上在2290埋一个买单,成交后再在2300埋一个

简易版的TimSort排序算法

欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. 简易版本TimSort排序算法原理与实现 TimSort排序算法是Python和Java针对对象数组的默认排序算法.TimSort排序算法的本质是归并排序算法,只是在归并排序算法上进行了大量的优化.对于日常生活中我们需要排序的数据通常不是完全随机的,而是部分有序的,或者部分逆序的,所以TimSort充分利用已有序的部分进行归并排序.现在我们提供一个简易版本TimSort排序算法,它

【常用算法思路分析系列】与二分搜索相关高频题

本文是[常用算法思路分析系列]的第五篇,总结二分搜索相关的高频题目和解题思路.本文分析如下几个问题:1.求数组局部最小值问题:2.元素最左出现的位置:3.循环有序数组求最小值:4.最左原位:5.完全二叉树计算结点数:6.快速N次方. 本系列前四篇导航: [常用算法思路分析系列]排序高频题集 [常用算法思路分析系列]字符串高频题集 [常用算法思路分析系列]栈和队列高频题集(修改版) [常用算法思路分析系列]链表相关高频题集 二分搜索的重要提醒: 一般我们选择中点进行搜索,会写成mid = (lef

Android学习之路——简易版微信为例(三)

最近好久没有更新博文,一则是因为公司最近比较忙,另外自己在Android学习过程和简易版微信的开发过程中碰到了一些绊脚石,所以最近一直在学习充电中.下面来列举一下自己所走过的弯路: (1)本来打算前端(即客户端)和后端(即服务端)都由自己实现,后来发现服务端已经有成熟的程序可以使用,如基于XMPP协议的OpenFire服务器程序:客户端也已经有成熟的框架供我们使用,如Smack,同样基于XMPP协议.这一系列笔记式文章主要是记录自己学习Android开发的过程,为突出重点(Android的学习)

html5 canvas简易版捕鱼达人游戏源码

插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触发的. 找htm5,html5教程,html开发的朋友来涂志海个人博客网,这里有你想要的一切(万一没有的,请联系涂志海,再解决,嘿嘿) 下 载 演示地址 下载说明: 1.解压密码:tuzhihai.com 2.只有部分模板会提供多页面下载,未加说明都是只有一个首页index.html模板. 3.如果

Android学习之路——简易版微信为例(二)

1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件——Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以

推荐算法相关

目录 推荐算法相关 推荐系统介绍 评估指标 评估方法 推荐系统发展 相关算法 LFM算法 Personal Rank算法 item2vec算法 Content Based LR + GBDT FM.FFM MLR WDL FFN PNN DeepFM DIN Deep & Cross Network(DCN) 推荐算法相关 推荐系统介绍 What:分类目录.搜索引擎.推荐系统 Why:需要在信息过载.用户需求不明确的背景下,留住用户和内容生产者,实现商业目标 评估指标 准确性 学界:RMSE.M

基于socket简易版客户端,服务端交互

简易版客户端服务端交互 常识 AF_UNIX 是基于文件类型的套接字家族 AF_INET是 基础网络类型的套接字家族 socket 模块属性很多,可以直接使用from module import *语句 ,这样socket所有的数据都被带劲命名空间里了. 减少代码量(少用) 服务端 #1导入 import socket # 2.获取套接字 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #3绑定 s.bind(('127.0.0.1',807

C#调用OpenCV开发简易版美图工具

前言 在C#调用OpenCV其实非常简单,因为C#中有很多OPenCV的开源类库. 本文主要介绍在WPF项目中使用OpenCVSharp3-AnyCPU开源类库处理图片,下面我们先来做开发前的准备工作. 准备工作 首先,我们先创建一个WPF项目. 然后,在Nuget上搜索OpenCVSharp,如下图: 接着,我们选择OpenCVSharp3-AnyCPU选项进行安装 . 安装了OpenCVSharp3-AnyCPU后,我们的项目会自动引入4个类库,如下图: 到这里,我们的准备工作就完成了,非常