用python实验步骤: 1. 数据选取:分别从商业新闻和体育新闻类别中各自选取10篇文档。 2. 利用Jieba分词对选取的文档进行分词 3. 编写TF-IDF算法,对每篇文档分词后的词计算TF-IDF值 4. 利用TF-IDF值对每篇文档提取关键特征词:即,每篇文档,根据TF-IDF值对词从高到低进行排序,选取前10个词作为关键特征词。
时间: 2023-06-15 11:05:54 浏览: 122
好,下面是具体的步骤:
1. 数据选取:从商业新闻和体育新闻类别中各自选取10篇文档,保存在两个文件夹中,每篇文档的文件名为其标题。
2. 利用Jieba分词对选取的文档进行分词。代码如下:
```python
import jieba
def seg_words(text):
# 对文本进行分词
seg_list = jieba.cut(text)
return " ".join(seg_list)
# 读取文档
def read_file(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read()
return text
# 对所有文档进行分词
def seg_all_docs(doc_path):
docs = []
for file_name in os.listdir(doc_path):
file_path = os.path.join(doc_path, file_name)
text = read_file(file_path)
seg_text = seg_words(text)
docs.append(seg_text)
return docs
# 分别对商业新闻和体育新闻进行分词
business_docs = seg_all_docs('business_news')
sports_docs = seg_all_docs('sports_news')
```
3. 编写TF-IDF算法,对每篇文档分词后的词计算TF-IDF值。代码如下:
```python
from sklearn.feature_extraction.text import TfidfVectorizer
# 对所有文档进行TF-IDF计算
def calc_tfidf(docs):
vectorizer = TfidfVectorizer()
tf_idf = vectorizer.fit_transform(docs)
return tf_idf, vectorizer.get_feature_names()
# 分别计算商业新闻和体育新闻的TF-IDF值
business_tfidf, business_vocab = calc_tfidf(business_docs)
sports_tfidf, sports_vocab = calc_tfidf(sports_docs)
```
4. 利用TF-IDF值对每篇文档提取关键特征词。代码如下:
```python
# 对每篇文档提取关键特征词
def extract_keywords(tf_idf, vocab, doc_idx, k):
# 获取指定文档的TF-IDF值
doc_tfidf = tf_idf[doc_idx]
# 将稀疏矩阵转换为数组
doc_tfidf_arr = doc_tfidf.toarray()[0]
# 对TF-IDF值从大到小进行排序
sorted_tfidf_idx = doc_tfidf_arr.argsort()[::-1]
# 获取前k个关键特征词
keywords = [vocab[i] for i in sorted_tfidf_idx[:k]]
return keywords
# 分别对商业新闻和体育新闻的每篇文档提取关键特征词
business_keywords = []
for i in range(business_tfidf.shape[0]):
keywords = extract_keywords(business_tfidf, business_vocab, i, 10)
business_keywords.append(keywords)
sports_keywords = []
for i in range(sports_tfidf.shape[0]):
keywords = extract_keywords(sports_tfidf, sports_vocab, i, 10)
sports_keywords.append(keywords)
```
以上就是用Python实现TF-IDF算法提取关键特征词的完整步骤。
阅读全文