- 简介:设计一个简单的新闻推荐项目,采用的是BBCnews
步骤
一、设置环境与参数
二、数据预处理,导入文件
- 去掉多余的punctuations
punct = re.compile('[%s]' % re.escape(string.punctuation))
text = punct.sub("",text)
- 句子分词,一个list是一个句子,然后分词
- 英文分词用:
tokens = nltk.word_tokenize(text) - 中文分词用jieba
- 每个list都是一句话的词语集合了,去掉stopwords
- 英文停用词:
from nltk.corpus import stopwords
stopwords.words('english') - 中文停用词:
https://github.com/goto456/stopwords
- 数据集放入gensim.corpora的字典中,过滤掉词频过多或者过少的单词
dic = corpora.Dictionary(train_set)
dic.filter_extremes(no_below=no_below_this_number, no_above=no_above_fraction_of_doc)
- 将训练数据中的单词转换为词袋(bag of words)的方式
corpus = [dic.doc2bow(text) for text in train_set]
结果就是
[[(0, 1), (1, 1), (2, 2), (3, 1), (4, 1), (5, 2)],
[(0, 1), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1)]]
标记为0的I,在第一句话只出现了一次, 所以为(0,1),而标记为5的you在第一句话出现了2次,所以为(5,2)
- 词袋转化为tfidf形式