本文实现了根据余弦距离的文本相似度的C++实现算法,如要要点如下:
1、对1998年1月的人民日报所有文章进行预处理(其中文件已经分化好分词),然后进行去噪声、去停用词等操作。
2、对处理好的数据进行余弦计算,并存储为相应的数据结构。
3、输出前N篇最相似的文章
下面介绍
Statistics.cpp,对预处理文件进行统计词频。
#pragma once
#include "TextSimilarity.h"
#include <windows.h>
void ContentStatistics(string& ArticleContent,Article& SigleArtile)
{
//1.把词分割放入一个list中
//2.用停用词删除list中的元素
//3.遍历list,记住首词,统计出现次数,重复删掉
// 词和次数放入SingleArtile的对象中的map<string,size_t> WordList中
list<string> Wordlist;
list<string>::iterator WordIter;
size_t offset = 0;
size_t begin = 0;
size_t over = ArticleContent.size();
size_t end = 0;
string temp;
while(offset != over)
{
if(ArticleContent[offset]>0 && ArticleContent[offset] < 127)
{
offset++;
}
else
{
begin = offset;
while(!(ArticleContent[offset]>0 && ArticleContent[offset] < 127)
&&am