为了完成《web搜索》课的作业,我奋斗了两天把层次汇合聚类HAC算法和基于亲和性消息的聚类算法给实现了。为了实现这两个算法,第一件事就是把文档向量给计算出来。具体而言就是文本集中的索引词构成了向量空间的一个维度。这样有m个索引词就构成了m维的特征向量。在构建特征向量的过程中需要频繁使用std::map。因为我需要知道一个文档中这个索引词,出现的概率是多少。一下是我的一些经验和大家分享一下:
1.operator [] 。这个[]的作用很大,不仅可以把key所对应value的引用取出来,还有插入的功能。展示一个基本的使用方法先:
using namespace std;
...
map elem;
....
//insert operation...
//get inserted valuestring keyword;
int freq = elem[keyword];
这样就可以把map中key对应的value取出来!如果我输入的keyword,这个map里面没有怎么办?这时就使用了[]的插入功能。如果用户填入了一个map没有的keyword。operator []可以插入一个新的pair。并调用mapped data的构造函数。有代码为证!
1 struct NumIDF
2 {
3 int num;
4 bool showup;
5 NumIDF()
6 {
7 num = 0;
8 showup = false;
9 cout << "set to 0 and false" << endl;
10 }