网络新闻复杂多样,人们都喜欢看感兴趣的新闻,对于英文新闻也是如此,我们希望能够将长篇的英文文章例如新闻的主题关键词提取出来,以便于读者对新闻兴趣点进行快速选择,提高阅读效率。我们从网络上摘取大量的英文新闻文章进行调研,找到相关特征,进行主题关键词提取,提供给读者,进行阅读选择。
1. 模型建立
2. 特征选择
我们选择的是三个特征,一个词是否能成为这篇文章的主题词与其在这篇文章的频率成正比,与其在其他文章的出现成反比,也就是说主题词具有区分此篇文章与其他文章的特性,最后我们还根据英文新闻的特点将是否首尾段作为主题权重的重要构成部分。
3. 采用算法
前两个特征采用TF-IDF算法来实现。
TF-IDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。
#include <windows.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 5269 //文献数目
#define textN 10 //题目数目
#define ERROR 1
#define OK 0
const int WORD_LENGTH = 30;//定义单个单词最大长度
char temp[WORD_LENGTH];//定义用以临时存放单词的数组
typedef struct Node {
char word[WORD_LENGTH] = { '