本次实验将根据tf-idf的计算方法编写一个自定义的计算tf-idf的方法,对新闻文本数据进行句向量化。具体编写思路如下图所示:
题目要求:
- 根据tf-idf的计算方法编写一个自定义的计算tf-idf的方法(推荐包装成函数或者类),使用公式可以在pdf中进行说明;
- 使用文本数据的test.txt(每一行为一条新闻数据),使用spacy(数据预处理)和自定义的tf-idf函数(词袋模型)句向量化(输出结果可以自定义结构,但需要在pdf中进行说明),并输出成resut.txt提交。
使用自定义的tf-idf函数进行句向量化
一、导入包
导入本次实验需要用的包。
import spacy
import math
from collections import Counter
二、导入文件
- 使用with open()方法打开新闻文本文件。
def file(path):
with open(path,'r',encoding='UTF-8') as fp:
data = fp.readlines()
return data
- 导入后的新闻文本如下:
- 从上图可以看到,以每一行为一条新闻数据来划分的话,这里一共划分出了85个新闻数据文档。
三、使用spacy进行数据预处理
- 根据spacy自带的停词库,对每一个新闻数据文档进行分词。
(具体参考:https://www.cnblogs.com/ukiii/p/14637197.html)
#去除停用词(使用spacy进行预处理)
def stopwords(article):
nlp = spacy.load("zh_core_web_sm")
stopword = [];lst = [];lst2 = []
for i in article:
doc = nlp(i)
lst.append(