【NLP论文】02 TF-IDF 关键词权值计算

之前写了一篇关于关键词词库构建的文章,没想到反响还不错,最近有空把接下来的两篇补完,也继续使用物流关键词词库举例,本篇文章承接关键词词库构建并以其为基础,将计算各关键词的 TF-IDF 权值TF-IDF 权值主要用于表达各关键词的重要程度,最后展示一个实际应用的例子—构建物流评价体系并结合TF-IDF 关键词权值,希望能给大家启发。

目录

1 TF-IDF 关键词权值计算

1.1 为什么使用 TF-IDF ?

1.2 TF-IDF 介绍

1.3 TF-IDF 关键词权值计算

① 语料

②  TF-IDF 计算

③ xx 关键词匹配

2 构建XX评价体系

2.1 构建物流评价体系

2.2 TF-IDF 权值结合评价体系


 代码地址:nlp_yinyu

1 TF-IDF 关键词权值计算

1.1 为什么使用 TF-IDF ?

上一篇文章有统计关键词的词频数,简单来说,某语料中某关键词的词频数越大,那么该关键词在该语料中的重要程度越大,这是比较容易理解的。

那么有没有一种更加直观并且可量化的方式表示某关键词在语料中的重要程度呢,那这就是本篇文章介绍的 TF-IDF,它将计算出一个数值来表示关键词对于预料的重要程度,数值越大,重要程度越大。

1.2 TF-IDF 介绍

TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本特征提取方法,用于评估一个词语对于一个文档集合中的某个文档的重要程度。

TF(Term Frequency)表示某个词在文档中出现的频率,即词频,TF值越大表示该词在文档中的重要性越高。

IDF(Inverse Document Frequency)表示逆文档频率,它衡量词语在文档集合中的普遍重要性,IDF值越大表示该词对于区分不同文档的能力越强。

TF-IDF的计算公式为: TF-IDF(t,d) = TF(t,d) * IDF(t)

其中,t表示词语,d表示文档。TF(t,d)表示词语t在文档d中的词频(出现的次数),IDF(t)表示词语t的逆文档频率。

1.3 TF-IDF 关键词权值计算

① 语料

语料还是以之前爬取的京东网站上的 5000 条评论数据为例,可以在文章顶部的代码仓库中下载!

②  TF-IDF 计算

和分词步骤类似,主要分为以下三步:

  1. 引入语料 excel 数据
  2. 加载自定义词典
  3. 权值计算,生成【TF-IDF关键词权值计算表.xlsx】文件

代码如下:

import jieba.analyse
import pandas as pd
from base_handle import BaseHandle # 引入工具类baseHandle = BaseHandle() #实例化'''
2.1 word2vec 拓展关键词词库
'''def words_weight(url):'''TF-IDF关键词权值计算'''text = baseHandle.read_col_merge_file(url) #引入语料 excel 数据diy_dict=(baseHandle.get_file_abspath('物流词汇大全.txt')) #引入自定义词典jieba.load_userdict(diy_dict) #加载自定义字典# 第一个参数:待提取关键词的文本# 第二个参数:返回关键词的数量,重要性从高到低排序!!# 第三个参数:是否同时返回每个关键词的权重# 第四个参数:词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词keywords_list = jieba.analyse.extract_tags(text, topK=None, withWeight=True, allowPOS=())#print(keywords_list)#以列表形式df = pd.DataFrame(keywords_list,columns=['keyword', 'weight'])# list转dataframedf.to_excel("TF-IDF关键词权值计算表.xlsx", index=False)# 保存到本地excel#jieba自己本来就拥有的一个比较大众化的语料库。因此对于相对来说比较大众化的文本数据处理,jieba自带的TF-IDF语料库可以完美契合我们的诉求。if __name__ == "__main__":words_weight(baseHandle.get_file_abspath('语料库_京东_5000条评论.xlsx'))

最终输出【TF-IDF关键词权值计算表.xlsx】文件如下:

可以看到这是统计了所有词汇的权值结果,足足有7424个单词,那么接下来就需要进行筛选匹配。

③ xx 关键词匹配

物流关键词词库为例,然后我们在上一篇文章中统计出来的物流关键词词库就派上用场了 👇

class BaseHandle(object):def __init__(self):# 物流关键词词库:目前30个物流关键词self.logistics_list = ['京东', '新鲜', '包装', '物流', '很快', '快递', '收到', '速度', '送货', '推荐','小哥', '服务', '发货', '配送', '送到', '到货', '第二天', '冷链', '完好', '送货上门'# 使用word2vec加的关键词 👇'严谨','保障', '效率', '方便快捷', '客服', '省心', '快捷', '严实']

主要分为以下三步:

  1. 读取TF-IDF关键词权值计算表
  2. 遍历匹配
  3. 生成【物流关键词词库权值计算表.xlsx】文件

代码如下:

import jieba.analyse
import pandas as pd
from base_handle import BaseHandle # 引入工具类baseHandle = BaseHandle() #实例化def words_ididf_match(keywords_list):'''关键词批量匹配权重'''df = pd.read_excel('TF-IDF关键词权值计算表.xlsx', sheet_name='Sheet1')b1 = []b2 = []for i in range(len(df)):keyword = df.loc[i,'keyword']if any(word if word == keyword else False for word in keywords_list): #判断列表(list)内一个或多个元素是否与关键词相同a1 = df.loc[i,'keyword']a2 = df.loc[i,'weight']b1.append(a1)b2.append(a2)else:continuef1 = pd.DataFrame(columns=['关键词', '权重'])f1['关键词'] = b1f1['权重'] = b2f1.to_excel("物流关键词词库权值计算表.xlsx", index=False)# 保存到本地excelif __name__ == "__main__":words_ididf_match(baseHandle.logistics_list)

最终输出【物流关键词词库权值计算表.xlsx】文件如下:

如此一来,可以看到物流关键词词库中各关键词的权重了,各关键词对于语料的重要程度也就很直观了!

2 构建XX评价体系

2.1 构建物流评价体系

以物流为例,前文已经存在物流关键词词库和 TF-IDF 权值数据了,那么我们该如何利用呢,在此我提供一个思路:可利用这些数据来服务一个评价体系,分为几个维度,各维度下分几个指标,或者直接简单地分为几个维度即可,本文以此为例。

构建评价体系的方法见仁见智,可以说是文献统计,问卷统计等等,我将物流评价体系分为六大维度:货物完好度、物流响应能力、人员沟通质量、误差处理、物流服务费用和信息质量。

然后将物流关键词词库中的关键词匹配到这几个维度下,这就需要人工进行操作了,如下:

维度关键词
货物完好度京东,新鲜,包装,配送,冷链,到货,完好,严实
物流响应能力快递,物流,送货,收到,很快,速度,发货,送到,第二天,快捷
人员沟通质量小哥,服务,客服
误差处理保障
物流服务费用方便快捷,严谨
信息质量推荐,省心,效率

我简单地归类了下,不一定准确,算是举个例子~

2.2 TF-IDF 权值结合评价体系

接下来就是利用 TF-IDF 权值数据了,将每个关键词的权值标上去,如下图:

如此,可以清晰地看到各维度的重要程度,而且由于它提供的是量化数据,所以也会显得比较可靠。

为了显得研究更加丰富,下一篇文章将结合情感分析进行统计!

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

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

相关文章

软件工程PPT 笔记摘录(2)

分析软件需求 UML 提供了用例图来分析和描述用例视角的软件需求模型 UML 提供了交互图和状态图来描述行为视角的软件需求模型 UML 提供了类图来描述和分析业务领域的概念模型 顺序图:强调消息传递的时间序 通信图:突出对象间的合作 类图&#xff0…

掌握C++11标准库(STL):理解STL的核心概念

深入探索C11标准库STL:新特性和优化技巧 一、前言二、容器简介三、迭代器简介四、map与unordered_map(红黑树VS哈希表)4.1、map和unordered_map的差别4.2、优缺点以及适用处4.3、小结 五、总结 一、前言 STL定义了强大的、基于模板的、可复用…

python设计模式:模板方法模式

更多Python学习内容:ipengtao.com 软件设计和编程中,设计模式是一种有助于解决常见问题的强大工具。其中之一是"模板方法模式",它是一种行为型设计模式,允许你定义一个算法的骨架,但将一些步骤的具体实现延迟…

win11 电脑睡眠功能失效了如何修复 win11 禁止鼠标唤醒

1、win11睡眠不管用怎么办,win11电脑睡眠功能失效了如何修复 在win11系统中拥有许多令人激动的新功能和改进,有些用户在使用win11电脑时可能会遇到一个问题:睡眠模式不起作用。当他们尝试将计算机置于睡眠状态时,却发现系统无法进…

HarmonyOS应用程序包快速修复

快速修复概述 快速修复是HarmonyOS系统提供给开发者的一种技术手段,支持开发者以远快于应用升级的方式对应用程序包进行缺陷修复。和全量应用升级软件版本相比,快速修复的主要优势在小、快和用户体验好。在较短的时间内不中断正在运行的应用的情况下&am…

SpringBoot + Vue 抖音全平台项目

简介 本项目是一个短视频平台,拥有热度排行榜,热门视频,兴趣推送,关注推送,内容审核等功能。 源码下载 网盘 (访问密码: 8418) 登录/注册 首页 创作中心 架构设计 上传视频业务流程 视频推送流程 1.用户订阅分类后…

聚类:聚类的介绍及k-means算法

聚类:聚类的介绍及k-means算法 什么是聚类 聚类就是在输入为多个数据时,将“相似”的数据分为一组的操作。1 个组就叫作 1 个 “簇”。下面的示例中每个点都代表1 个数据,在平面上位置较为相近、被圈起来的点就代表一 类相似的数据。也就是…

如何为开源项目和社区做贡献 -- 你应该知道的十件事(一)

1. 前言 大家好,我叫颜国进,现为英特尔边缘计算创新大使、百度飞桨开发者专家。回溯至2021年12月,那时的我,身为机械专业研一新生,仅在C和Python编程语言上有些许基础,对于深度学习的殿堂还只敢在门口窥探&…

【动态规划】【字符串】C++算法:正则表达式匹配

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode10:正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ’ 匹配零个或多个前面的那一个元素 所谓匹配,是…

web网站的工作流程和开发模式

web网站的工作流程和开发模式 基于Java Script封装的高级技术:Vue、Element、Nginx(前端程序部署的服务器) 初识Web前端 Web标准

Conv2Former:一种transformer风格的卷积特征提取方式

一、前言 昨天读到了一篇有意思的文章,文章提出通过利用卷积调制操作来简化self-attention。还证明了这种简单的方法可以更好地利用卷积层中嵌套的大核(≥7 7)。我们都知道ViTs推动了设计识别模型的发展,近几年使用的也相当的多,通常就是CN…

《ORANGE’S:一个操作系统的实现》读书笔记(十九)输入输出系统(一)

我们刚刚实现了简单的进程,你现在可能很想把它做得更加完善,比如进一步改进调度算法、增加通信机制等。但是这些工作不但做起来没有尽头,而且有些也是难以实现的,因为进程必须与I/O、内存管理等其它模块一起工作。而且&#xff0c…

Linux系统---进程程序替换

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、进程程序替换 一、替换原理 用fork 创建子进程后执行的是和父进程相同的程序 ( 但有可能执行不同的代码分支 ), 子进程往往要…

02 HAL库驱动按键响应外部中断

引言:这里我采用的实验平台可能跟大家的不太一样,文章的图像是一块资源拓展板, 主控板式fs_mp1a, 该板子的SOC是stm32mp157a, 有两个内核一个A7, 一个M4.但是实验的流程肯定都是一样的, 因为都是裸机程序嘛…

【PTA-C语言】实验七-函数与指针I

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 目录——实验七-函数与指针I 6-1 弹球距离(分数 10)6-2 使用函数输出一个整数的逆序数(分数 10)6-3 使用函数求最大公约数(分数 10)6-4…

Visual Studio 2015 中 SDL2 开发环境的搭建

Visual Studio 2015 中 SDL2 开发环境的搭建 Visual Studio 2015 中 SDL2 开发环境的搭建新建控制台工程拷贝并配置 SDL2 开发文件拷贝 SDL2 开发文件配置 SDL2 开发文件 测试SDL2 开发文件的下载链接 Visual Studio 2015 中 SDL2 开发环境的搭建 新建控制台工程 新建 Win32 …

从2023看2024前端发展趋势

前言 流光溯影,纵观2023全年,整个前端业界呈现出百业凋零之状,更不乏有“前端已死”等论调甚嚣尘上。从全局视角看IT行业,除了AI领域的大语言模型爆发外,整体都鲜有特别亮眼及突出的技术展现。故而,作为IT…

【华为机试】2023年真题B卷(python)-猴子爬山

一、题目 题目描述: 一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯: 每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 二、输入输出 输入描述…

深度学习核心技术与实践之计算机视觉篇

非书中全部内容,只是写了些自认为有收获的部分 计算机视觉背景 (1)视觉皮层的神经元是一列一列组织起来的,每一列神经元只喜欢某一种特定的形状或者某些简单的线条组合,而不是鱼、老鼠、鲜花 (2&#xf…

记矩阵基础概念

转自up:Naruto_Qcsdn:三维空间几何变换矩阵 先贴个站里分享的基础概念。 learn form 肥猫同学VFX b站:会用transform就会用矩阵 移动 旋转 缩放 1.transofrm ——输出变化矩阵 可以移动transform查看变化去理解 位移 缩放 旋转 由此—…