机器学习:自然语言处理之关键词提取(TF-IDF)

目录

前言

一、TF-IDF

1.TF

2.IDF

3.TF-IDF计算法则

4.TF-IDF的本质

二、代码实现

1.导入库

2.读取文本数据

[3. 初始化TfidfVectorizer并转换文本数据](#3. 初始化TfidfVectorizer并转换文本数据)

[4. 获取词汇表并创建 DataFrame](#4. 获取词汇表并创建 DataFrame)

5.处理每篇文章的特征

总结


前言

TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于文本挖掘的统计方法,用于评估一个词语在一篇文档中的重要性。

一、TF-IDF

1.TF

表示某个词在文档中出现的频率。计算方法是词频(该词在文档中出现的次数)除以文档总词数。

计算方式:

举个栗子:

2.IDF

衡量词语在整个语料库中的重要性。计算方法是文档总数除以包含该词的文档数,然后取对数。

计算方式:

3.TF-IDF计算法则

4.TF-IDF的本质

TF-IDF 通过将这两者相乘来赋予词语权重。它可以帮助识别在文档中频繁出现但在整个语料库中较少出现的关键词,从而提高文本分析的效果。

举个栗子:

根据TF-IDF的值可以判断,蜜蜂在这三个词里占该文章的权重最高,意味着更加关键

二、代码实现

  • 使用文本:

1.导入库

  • 导入sklearn里的TfidfVectorizer类,该类是一种用于文本特征提取的工具
  • 导入盘pandas库用于处理数据
python 复制代码
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd

2.读取文本数据

  • 打开指定的文本文件。
  • 读取文件的每一行,并将其存储为列表 text
python 复制代码
infile = open(r"task2_1.txt", "r")  # 打开文件
text = infile.readlines()  # 读取所有行 以列表形式存储

3. 初始化TfidfVectorizer并转换文本数据

  • 创建一个 TfidfVectorizer 对象。
  • 使用 fit_transform 方法将文本数据转换为 TF-IDF 特征矩阵,并打印矩阵。
python 复制代码
vectorizer = TfidfVectorizer()
tfdif = vectorizer.fit_transform(text)
print(tfdif)

4. 获取词汇表并创建 DataFrame

  • 获取 TF-IDF 特征矩阵中的词汇表 wordlist 。
  • 将 TF-IDF 特征矩阵转换为 DataFrame,并以词汇表作为行索引。
python 复制代码
wordlist = vectorizer.get_feature_names()  # 获取文章中所有的词
print(wordlist)
df = pd.DataFrame(tfdif.T.todense(), index=wordlist)

5.处理每篇文章的特征

  • 对每篇文章(列)提取特征,将其转换为列表。
  • 将每篇文章的特征(词汇和对应的 TF-IDF 值)存储在字典 resdict 中。
  • 将字典按 TF-IDF 值降序排序,并打印每篇文章中 TF-IDF 值最高的前十个词汇。
python 复制代码
a = df.iloc[:, 1]  # 提取第二篇文章的特征(仅作为示例)

for j in range(0, len(text)):
    featurelist = df.iloc[:, j].to_list()  # 将每一列的内容转换成列表
    resdict = {}
    for i in range(0, len(wordlist)):
        resdict[wordlist[i]] = featurelist[i] 
         # 将wordlist中的第 i 个词汇作为键,featurelist 中的第 i 个值作为对应的值,添加到 resdict 中
    resdict = sorted(resdict.items(), key=lambda x: x[1], reverse=True)  
    # 先生成键值对 再按键值对元组中的第二个元素进行排序  降序排序

    print(f"第{j + 1}篇文章:", resdict[:10])  # 输出频数最高的十个词

总结

TF-IDF的本质就是给文本中的词赋予权重,大多时候权重高的即可当做文章的关键词

相关推荐
面向星辰1 小时前
k均值,密度聚类,层次聚类三种聚类底层逻辑的区别
机器学习·均值算法·聚类
从后端到QT3 小时前
标量-向量-矩阵-基础知识
人工智能·机器学习·矩阵
nju_spy3 小时前
周志华《机器学习导论》第 15 章 规则学习(符号主义学习)
人工智能·机器学习·数理逻辑·序贯覆盖·规则学习·ripper·一阶规则学习
antonytyler4 小时前
机器学习实践项目(二)- 房价预测增强篇 - 特征工程四
人工智能·python·机器学习
机器学习之心6 小时前
NRBO-XGBoost+SHAP分析+新数据预测!机器学习可解释分析不在发愁!提供9种混沌映射方法(tent、chebyshev、singer等)
人工智能·机器学习·nrbo-xgboost
大千AI助手8 小时前
参考先验(Reference Priors)详解:理论与Python实践
人工智能·机器学习·贝叶斯·大千ai助手·参考先验·贝叶斯推断·先验
亚里随笔9 小时前
突破智能体训练瓶颈:DreamGym如何通过经验合成实现可扩展的强化学习?
人工智能·语言模型·自然语言处理·llm·agentic
Learn Beyond Limits12 小时前
Clustering vs Classification|聚类vs分类
人工智能·算法·机器学习·ai·分类·数据挖掘·聚类
gihigo199814 小时前
MATLAB数值分析方程求解方法详解
算法·机器学习·matlab
doubao3618 小时前
如何有效降低AIGC生成内容被识别的概率?
人工智能·深度学习·自然语言处理·aigc·ai写作