Python 使用TF-IDF

news2024/11/15 20:37:52

第一个 简易版本 直接来至 jieba 包,
一下代码直接来源 https://blog.csdn.net/qq_38923076/article/details/81630442
这里记录 进行对比
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence:待提取的文本语料

topK:返回 TF/IDF 权重最大的关键词个数,默认值为 20

withWeight:是否需要返回关键词权重值,默认值为 False

allowPOS:仅包括指定词性的词,默认值为空,即不筛选
————————————————
版权声明:本文为CSDN博主「碧空之戈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38923076/article/details/81630442

#简易版
from jieba import analyse
 
tfidf = analyse.extract_tags
#加载停用词
analyse.set_stop_words('stopword.txt')
text = '6月19日,《2012年度“中国爱心城市”公益活动新闻发布会》在京举行。' + \
       '中华社会救助基金会理事长许嘉璐到会讲话。基金会高级顾问朱发忠,全国老龄' + \
       '办副主任朱勇,民政部社会救助司助理巡视员周萍,中华社会救助基金会副理事长耿志远,' + \
       '重庆市民政局巡视员谭明政。晋江市人大常委会主任陈健倩,以及10余个省、市、自治区民政局' + \
       '领导及四十多家媒体参加了发布会。中华社会救助基金会秘书长时正新介绍本年度“中国爱心城' + \
       '市”公益活动将以“爱心城市宣传、孤老关爱救助项目及第二届中国爱心城市大会”为主要内容,重庆市' + \
       '、呼和浩特市、长沙市、太原市、蚌埠市、南昌市、汕头市、沧州市、晋江市及遵化市将会积极参加' + \
       '这一公益活动。中国雅虎副总编张银生和凤凰网城市频道总监赵耀分别以各自媒体优势介绍了活动' + \
       '的宣传方案。会上,中华社会救助基金会与“第二届中国爱心城市大会”承办方晋江市签约,许嘉璐理' + \
       '事长接受晋江市参与“百万孤老关爱行动”向国家重点扶贫地区捐赠的价值400万元的款物。晋江市人大' + \
       '常委会主任陈健倩介绍了大会的筹备情况。'
keywords = tfidf(text, topK=10, withWeight=False, allowPOS=())
print('结果为:')
print([keyword for keyword in keywords])
 
结果为:
['晋江市', '救助', '爱心', '基金会', '公益活动', '城市', '中华', '许嘉璐', '陈健倩', '孤老']

以下是函数版本:

from jieba import analyse
 
def textrank_extract(text,keyword_num=10):
    textrank = analyse.textrank
    analyse.set_stop_words('stopword.txt')
    keywords = textrank(text, keyword_num)
    # 输出抽取出的关键词
    for keyword in keywords:
        print(keyword + "/ ", end='')
    print()
 
def tfidf_extract(text,keyword_num=10):
    tfidf = analyse.extract_tags
    analyse.set_stop_words('stopword.txt')
    keywords = tfidf(text, keyword_num)
    # 输出抽取出的关键词
    for keyword in keywords:
        print(keyword + "/ ", end='')
    print()
 
if __name__ == '__main__':
    text = '6月19日,《2012年度“中国爱心城市”公益活动新闻发布会》在京举行。' + \
           '中华社会救助基金会理事长许嘉璐到会讲话。基金会高级顾问朱发忠,全国老龄' + \
           '办副主任朱勇,民政部社会救助司助理巡视员周萍,中华社会救助基金会副理事长耿志远,' + \
           '重庆市民政局巡视员谭明政。晋江市人大常委会主任陈健倩,以及10余个省、市、自治区民政局' + \
           '领导及四十多家媒体参加了发布会。中华社会救助基金会秘书长时正新介绍本年度“中国爱心城' + \
           '市”公益活动将以“爱心城市宣传、孤老关爱救助项目及第二届中国爱心城市大会”为主要内容,重庆市' + \
           '、呼和浩特市、长沙市、太原市、蚌埠市、南昌市、汕头市、沧州市、晋江市及遵化市将会积极参加' + \
           '这一公益活动。中国雅虎副总编张银生和凤凰网城市频道总监赵耀分别以各自媒体优势介绍了活动' + \
           '的宣传方案。会上,中华社会救助基金会与“第二届中国爱心城市大会”承办方晋江市签约,许嘉璐理' + \
           '事长接受晋江市参与“百万孤老关爱行动”向国家重点扶贫地区捐赠的价值400万元的款物。晋江市人大' + \
           '常委会主任陈健倩介绍了大会的筹备情况。'
 
    print('TF-IDF模型结果:')
    tfidf_extract(text)
    print('TextRank模型结果:')
    textrank_extract(text)
 
TF - IDF模型结果:
晋江市 / 救助 / 爱心 / 基金会 / 公益活动 / 城市 / 中华 / 许嘉璐 / 陈健倩 / 孤老 /
TextRank模型结果:
城市 / 爱心 / 救助 / 中国 / 社会 / 晋江市 / 基金会 / 大会 / 介绍 / 公益活动 / 

下面使用 sklearn 试试

from sklearn.feature_extraction.text import TfidfVectorizer, TfidfTransformer

corpus = [
'This This is the first document.',
'This This is the second second document.',
'And the third one.',
'Is this the first document?',
]

tfidf_model = TfidfVectorizer()

tfidf_matrix = tfidf_model.fit_transform(corpus)

word_dict = tfidf_model.get_feature_names_out()

print(word_dict)

print(tfidf_matrix)

在这里插入图片描述

案例二

from sklearn.feature_extraction.text import TfidfVectorizer, TfidfTransformer

# 1
tfidf_model = TfidfVectorizer(binary=False, decode_error='ignore', stop_words='english')
vec = tfidf_model.fit_transform(corpus)
tfidf_model.get_feature_names()

# 2
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_model = TfidfVectorizer(stop_words='english', ngram_range=(1, 1),
analyzer='word', max_df=.57, binary=False,
token_pattern=r"\w+",sublinear_tf=False)
vec = tfidf_model.fit_transform(corpus)
tfidf_model.get_feature_names_out()

# stop_words:string {'english'}, list, or None(default)如果为english,用于英语内建的停用词列表。
# - 如果为list,该列表被假定为包含停用词,列表中的所有词都将从令牌中删除; 
# - 如果None,不使用停用词。

# ngram_range(min,max):是指将text分成min,min+1,min+2,.........max 个不同的词组。
# 比如'Python is useful'中ngram_range(1,3)之后可得到'Python' 'is' 'useful' 'Python is' 'is useful' 和'Python is useful'
# 如果是ngram_range (1,1) 则只能得到单个单词'Python' 'is'和'useful'

# analyzer:string,{'word', 'char'} or callable定义特征为词(word)或n-gram字符

# max_df可以被设置为范围[0.7, 1.0)的值,基于内部预料词频来自动检测和过滤停用词。
# max_df: float in range [0.0, 1.0] or int, optional, 1.0 by default当构建词汇表时,严格忽略高于给出阈值的文档频率的词条,语料指定的停用词。
# - 如果是浮点值,该参数代表文档的比例,整型绝对计数值,如果词汇表不为None,此参数被忽略。

# binary:boolean, False by default
# - 如果为True,所有非零计数被设置为1,这对于离散概率模型是有用的,建立二元事件模型,而不是整型计数。

# token_pattern: 正则表达式显示了”token“的构成,仅当analyzer == ‘word’时才被使用。

# sublinear_tf:boolean, optional应用线性缩放TF,例如,使用1+log(tf)覆盖tf

TF-IDF 分词

from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
      'This is the first document.',
      'This document is the second document.',
      'And this is the third one.',
     'Is this the first document?',
  ]
vectorizer = TfidfVectorizer()

X = vectorizer.fit_transform(corpus)


在这里插入图片描述

corpus = [
      'This is the first document.',
     
  ]
X = vectorizer.fit_transform(corpus)
vectorizer.get_feature_names_out()

在这里插入图片描述

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
text = {"good movie", "not a good movie", "did not like",
        "i like it", "good one"}
tfidf = TfidfVectorizer(min_df=2, max_df=0.5, ngram_range=(1, 2))
features = tfidf.fit_transform(texts)
pd.DataFrame(
    features.todense(),
    columns=tfidf.get_feature_names()
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【阶段三】Python机器学习25篇:机器学习项目实战:LigthGBM算法的核心思想、原理与LightGBM分类模型

本篇的思维导图: LigthGBM算法的核心思想 LigthGBM算法是Boosting算法的新成员,由微软公司开发。它和XGBoost算法一样是对GBDT算法的高效实现,在原理上与GBDT算法和XGBoost算法类似,都采用损失函数的负梯度作为当前决策树的残差近似值,去拟合新的决策树。 …

MATLAB实验五

实验五 A 1、在同一图形窗口绘制。利用plot绘图指令绘图命令。 (1)在窗口上部绘制正弦信号 x(t)sin(0.5πtπ4),t∈[0,4π]x(t)sin(0.5\pi t\frac \pi 4),t∈[0,4\pi]x(t)sin(0.5πt4π​),t∈[0,4π]。要求曲线为黑色实线。 (2&#xff…

QT(7)-初识委托

初识委托1 简介2 QT中的委托类2.1 函数2.1.1 关键函数2.1.2 其他函数3 例子3.1 官方例子3.2 修改官方例子4 设想1 简介 委托是Qt中的一种机制,用于在Qt模型/视图架构中处理特定类型的数据。委托提供了一种方便的方法来定制特定类型的数据的显示和编辑。 委托可以做…

天空卫士参与编写的《数据安全治理实践指南(2.0)》正式发布

2023年1月5日,由中国信息通信研究院(以下简称“中国信通院”)、中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会主办,数据安全推进计划承办的第二届数据安全治理峰会在北京召开。本次峰会发布多项…

算法刷题打卡第64天:平衡二叉树

平衡二叉树 难度:简单 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,…

错误票据(第四届蓝桥杯省赛C++A/B组,第四届蓝桥杯省赛JAVAA/B组)

题目详细:解题思路:这题的难点主要在于对于数据的读入以及对于两个数字的查找对于数据的读入:1.直接对单行字符串进行转换:题目所给出的输入只有行数并不知道一行有多少个数字所以我们采用一下读取一行然后对一行的结果进行读入首…

docker提交腾讯云标准模式

简介我们公司的容器化标准模式,本次是以redis为例进行示范技术要求:你会简单的docker容器打包环境需要:docker、docker-compose、联网环境、腾讯云容器及镜像服务(公司已有TKE)文件需要:除了你自己的Dockerfile所需要的东西外&…

TensorFlow 基础(三)梯度和自动微分

文章目录Computing gradientsGradient tapesGradients with respect to a modelControlling what the tape watchesIntermediate resultsGradients of non-scalar targetsCases where gradients returns NoneReferencesimport numpy as np import matplotlib.pyplot as pltimpo…

【自学Python】Python三目运算符

Python三目运算符 Python三目运算符教程 Python 中没有其他语言类型的三目运算符,但是我们可以借助 if 语句实现类似的三目运算符。 Python三目运算符详解 说明 Python 的三目运算符是借助于 if 语句来实现的。 语法 True_statements if condition else Fals…

千锋教育嵌入式物联网教程之系统编程篇学习-02

目录 系统调用函数与库函数 库函数的组成 库函数与系统调用的关系 进程概述 进程的定义 进程与程序的区别 进程的状态及其转换 进程的调度机制 进程控制块 查看当前系统所有进程 进程号函数 进程创建fork函数 进程挂起 进程的等待 wait() waitpid 特殊进程 …

CPU 运行时的硬件环境详解

注:本文参考小林coding相关文章,侵权请联系 目录 1.图灵机的工作方式 2.冯诺依曼模型 3.内存 4.中央处理器 5总线 6.输入、输出设备 7.线路位宽与 CPU 位宽 代码写了那么多,你知道 a 1 2 这条代码是怎么被 CPU 执行的吗? …

TCP/IP协议族之TCP、UDP协议详解(小白也能看懂)

前言 在进行网络编程之前,我们必须要对网络通信的基础知识有个大概的框架,TCP/IP协议族涉及到多种网络协议,一般说TCP/IP协议,它不是指某一个具体的网络协议,而是一个协议族。本篇章主要针对IP协议、TCP和UDP协议记录总…

常用的代码命名方法

常见的三种命名方法1 驼峰命名法(CamelCase)驼峰命名法应该我们最常见的一个,这种命名方式使用大小写混合的格式来区别各个单词,并且单词之间不使用空格隔开或者连接字符连接的命名方式1 大驼峰命名法(UpperCamelCase&…

Mysql 基础-持续更新

去重 DISTINCT DISTINCT 关键字的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据给用户 注意点: DISTINCT 关键字只能在 SELECT 语句中使用。在对一个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前…

IPv6路由协议实验配置(ospfv3、isis-ipv6、bgp4+)

目录 OSPFv3实验配置 建立OSPFv3邻居 AR1修改DR优先级 AR1引入直连路由 配置Stub区域 ISIS IPv6实验配置 建立ISIS邻居 修改AR1的DIS优先级 在AR1上配置路由泄露 BGP4实验配置 AR1与AR2、AR3建立IBGP邻居关系 AR2与AR4建立EBGP邻居关系 配置AR1为反射器 OSPFv3实验…

Android时间与服务器同步方案

转自: https://blog.csdn.net/qinci/article/details/70666631这个的吧?转发请注明来源吧?Android时间与服务器同步方法_飛舞的青春的博客-CSDN博客Android时间与服务器同步方案 在部分软件应用场景里,我们对应用时间要求非常苛刻…

mysql navicat函数_Navicat for MySQL函数高级属性

过程和函数是一组可以保存在服务器上的SQL语句。MySQL(www.formysql.com)函数高级属性主要涉及安全性,定义者,数据访问,决定性等方面的内容Navicat 函数高级属性安全性:指定用创建函数的用户权限来运行函数,或是用启用…

【C++】vector (vector的介绍及使用)

文章目录vector的介绍及使用前面我们学习了string,我们在学vector可以结合之前的理解,所以我们vector就不详细介绍了。 vector的介绍及使用 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就…

一个没有混进大厂的普通程序员,10年真实收入变化

有人说,程序员的高收入和工作年限成正比,认为自己的薪资应该如此计算: private static boolean 计算工资() { //years工作时长(年)int years 5;while(years-- > 0){做项目();团建活动();涨工资();拿年终奖();}return 跳槽() &&…

2021年亚太杯APMCM数学建模大赛A题图像边缘分析与应用求解全过程文档及程序

2021年亚太杯APMCM数学建模大赛 A题 图像边缘分析与应用 原题再现: 随着科学技术的发展,对各种工件和零部件测量精度的要求越来越高,对测量仪器的要求也越来越高。数字图像尺寸测量仪器等各种图像测量设备目前正逐渐取代传统的手动卡尺测量…