Kmeans聚类之建立词袋子模型
来源:互联网 发布:python buffer类型 编辑:程序博客网 时间:2024/05/17 07:14
作者:finallyliuyu(转载请注明出处)
最近打算将自己的工作平台由C#,python等迁移到C++。这是我的第一个C++工作程序吧。
IDE:VS2008
language: C++
library:boost(安装boost库,先要安装python安装方法见《boost库安装方法》)
tools:weka
C++程序完成的功能:从数据库中读出文章-》分词(调用ICTCLAS)-》特征词选择(DF法)->VSM模型建立->把文章写成weka数据格式arff文件(此处写成的是稀疏数据的储存格式。weka教程见《教程》)
首先给出构造停用词集合的代码:
然后我们给出调用ICTclas进行分词的代码,注意:工程中调用ICTCLAS时要把data 文件夹,config文件,ictclas30.h ICTCLAS30.dll,ICTCLAS30.LIB放在工程所在的文件夹。将ictclas30.h加入工程,在调用ICTCLAS30.DLL的cpp文件的头部加上#pragma comment(lib, "ICTCLAS30.lib")
ICTclas分词结果默认的分割符是空格,在以上函数中,我们改成了“|”作为分隔符,字符串替换考率用boost的正则表达式库。因为我们要处理的是汉字字符串,所有要进行宽字符串窄字符串之间的转化,我采用的是利用win32函数的方法更多方法请见《boost正则表达式处理汉字字符串》。
有了以上的功能,我们现在编写一个函数,函数的输入是一篇文章,输出是一个词的集合。该词集合保存的是初步去掉噪声词后的“好词”
代码如下
上面的这个函数可以说是我们建立词袋子模型的基本单元,给上面的函数输入文章内容(rawtext),以及停用词表,那么它将返回一个词集合。下面我们开始构造词袋子模型。在构造词袋子模型之前,我们要说一下,我们词袋子模型的格式map<string,vector<pair<int,int>>>:主键为该词,pair中的第一个int 为文章标号,第二个词为在该文中出现的次数,vector<pair<int,int>>统计的是这个词在那些文章中出现,出现过几次。因为数据量比较大所以词袋子模型map,采用引用传参,如果是值传参的话,会在内存中产生拷贝,浪费内存
下面是从数据库中读文章建立词袋子模型的代码
未完,待续。。。。。
- Kmeans聚类之建立词袋子模型
- 建立词袋子模型
- 聚类算法之KMeans(Java实现)
- 聚类算法之KMeans(Java实现)
- 聚类算法之KMeans(Java实现)
- 聚类算法之KMeans(Java实现)
- 【spark系列6】聚类之KMeans
- 聚类算法之KMeans(Java实现)
- Mahout学习之聚类算法Kmeans
- SparkML之聚类(一)Kmeans聚类
- Scikit-learn实战之聚类-Kmeans
- opencv之kmeans聚类算法
- KMEANS聚类算法
- KMeans聚类算法
- kmeans聚类算法
- Kmeans 文本聚类
- Kmeans聚类算法
- Kmeans聚类算法
- 大学生活 ——人生最迷茫的境地
- HTTP协议总结
- iOS 获取当前经纬度
- eclipse debug 重新指定源码
- EditPlus 3.60 新功能:函数列表面板、代码提示
- Kmeans聚类之建立词袋子模型
- wamp安装ZendOptimizer
- 将Qt 动态链接生成的exe及依赖dll打包方法
- (俄)快车AM3 140.0°E
- java线程学习笔记
- 陌上花开,聆听那一曲旧时光的伤
- 学习JQuery - 2
- session持久化设置
- QT程序打包发布 - 免安装(MolePro Box)