TF/IDF算法

第1关:去除停用词

任务描述

本关任务:根据本关所学有关停用词的知识,编写使用停用词表去除停用词的程序并通过测试用例。

相关知识

为了完成本关任务,你需要掌握:

  1. 停用词的意义;

  2. 去除停用词的步骤。

停用词简介

停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为 Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。

但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的。

停用词的类别

对于一个给定的目的,任何一类的词语都可以被选作停用词。通常意义上,停用词大致分为两类:

1、人类语言中包含的功能词:这些功能词极其普遍,与其他词相比,功能词没有什么实际含义,比如 the、is、at、which、on 等。但是对于搜索引擎来说,当所要搜索的短语包含功能词,特别是像 The Who、Take That 等复合名词时,停用词的使用就会导致问题。

2、词汇词:比如 want 等,这些词应用十分广泛,但是对这样的词搜索引擎无法保证能够给出真正相关的搜索结果,难以帮助缩小搜索范围,同时还会降低搜索的效率,所以通常会把这些词从问题中移去,从而提高搜索性能。

停用词的功能

文档中如果大量使用 Stop words 容易对页面中的有效信息造成噪音干扰,所以搜索引擎在运算之前都要对所索引的信息进行消除噪音的处理。了解了 Stop Words ,在网页内容中适当地减少停用词出现的频率,可以有效地帮助我们提高关键词密度,在网页标题标签中避免出现停用词能够让所优化的关键词更集中、更突出。

因此,我们在进行自然语言处理的过程中,经常会使用停用词表去除文本中的停用词,以提高文本处理效率。常见步骤有:

  1. 找到一个合适的停用词表;

  2. 对文本内容进行遍历,去除文本中的停用词并保存。

编程要求

在右侧编辑器中的 Begin-End 之间补充 Python 代码,使用已编写好的停用词表加载函数去除所输入文本中的停用词,并输出去掉文本停用词后的结果。其中文本内容通过 input 从后台获取。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

测试输入: 统帅一声令下,全军迅疾行动。除夕逆行武汉,挺进抗疫一线,党员率先垂范,军地共克时艰。从接手地方医院病区到进驻武汉火神山医院、武汉市泰康同济医院、湖北省妇幼保健院光谷院区,不论是传染病防控专家还是一线医务人员,面对疫情,人民军队始终与人民紧密团结在一起,誓死不退,英勇奋战,展现了人民子弟兵忠于党、忠于人民的政治品格。。

预期输出: 统帅声令下全军迅疾行动夕逆行武汉挺进抗疫线党员率先垂范军共克时艰接手方医院病区进驻武汉火神山医院武汉市泰康济医院湖北省妇幼保健院光谷院区不传染病防控专家还线医务人员面疫情人民军队始终人民紧密团结誓死不退英勇奋战展现人民子弟兵忠党忠人民政治品格

# 停用词表加载方法
def get_stopword_list():# 停用词表存储路径,每一行为一个词,按行读取进行加载# 进行编码转换确保匹配准确率stop_word_path = './stopword.txt'stopword_list = [sw.replace('\n', '') for sw in open(stop_word_path,encoding='utf-8').readlines()]return stopword_listif __name__ == '__main__':text=input()result=""list = []# 任务:使用停用词表去掉text文本中的停用词,并将结果保存至result变量# ********** Begin *********#stopwords = get_stopword_list()list = [word for word in text if word not in stopwords]for word in list:result+=word# ********** End **********#print(result,end="")

第2关:TF/IDF 算法

任务描述

本关任务:根据本关所学有关 TF/IDF 算法的知识,编写 TF/IDF 算法程序并通过所有测试用例。

相关知识

为了完成本关任务,你需要掌握:

  1. 关键词提取技术的思想;

  2. TF/IDF 算法的含义与使用方法。

关键词提取技术概述

在信息爆炸的时代,很多信息我们无法全面接收,我们需要从中筛选出一些我们感兴趣的或者说对我们有用的信息进行接收。怎么选择呢,关键词提取就是其中一个很好的方法。如果我们可以准确地将所有文档都用几个简单的关键词描述出来,单看几个关键词就可以了解一篇文章,这样会大大提高我们的信息获取效率。

类似于其他的机器学习方法,关键词提取算法一般也可以分为有监督和无监督两类:

  1. 有监督

主要通过分类的方式进行,通过构建一个丰富和完善的词表,然后通过判断每个文档与词表中每个词的匹配程度,以类似打标签的方式,从而达到关键词提取的效果。能够获得较高精度,但是需要大批量的标注数据,人工成本较高;

  1. 无监督

这种方式无需人工生成、维护的词表,同时也不需要人工标注语料辅助进行训练,这类方法目前主要有 TF-IDF 算法、 TextRank 算法和主题模型算法( LSA 、 LSI 、 LDA 等);

TF/IDF 算法

TF/IDF 算法(Term Frequency-Inverse Document Frequency ,词频-逆文档频次算法)是一种基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度。这种作用显然很符合关键词抽取的需求,一个词对文档越重要,那就越可能是文档的关键词,因此,人们常将 TF/IDF 算法应用于关键词提取中。

图1

TF-IDF 的主要思想是:如果某个单词在一篇文章中出现的频率(TF)高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

1、TF 是词频( Term Frequency )

词频( TF )表示词条(关键字)在文本中出现的频率。这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。计算公式为: TFw​=该类中所有词条数目在某一类中词条w出现的次数​

2、IDF 是逆向文件频率( Inverse Document Frequency )

某一特定词语的 IDF ,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。计算公式为:

idfi​=log∣j:ti​∈dj​∣∣D∣​

3、TF-IDF 实际上是:TF * IDF

某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的 TF-IDF 。因此,TF-IDF 倾向于过滤掉常见的词语,保留重要的词语。计算公式为: TF-IDF=TF∗IDF

如何训练关键词提取算法

我们训练一个关键词提取算法需要以下几个步骤:

  • 加载已有的文档数据集;

  • 加载停用词表;

  • 对数据集中的文档进行分词;

  • 根据停用词表,过滤干扰词;

  • 根据数据集训练算法。

在根据训练好的关键词提取算法对新文档进行关键词提取要经过对新文档进行分词;根据停用词表,过滤干扰词;提取关键词这个几个环节。

编程要求

在右侧编辑器中的 Begin-End 之间补充 Python 代码,完成 TF/IDF 算法,提取所输入文本中的关键词,并输出关键词提取结果。其中文本内容通过 input 从后台获取。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

测试输入: 疫情面前,时间就是生命!高效、便捷一直是民航的优势。这一次,中国民航再次挺身而出,发挥着不可替代的作用,彰显着民航担当。这样的担当体现在中国民航坚决打赢疫情防控阻击战的决心里,体现在一个又一个航班任务执行中。关键时刻,民航领域各单位各企业快速反应、积极应对,尽全力保障医疗救护人员和物资的运输工作,为战“疫”抢出时间、抢出希望。

预期输出:

 
  1. Building prefix dict from the default dictionary ...
  2. Dumping model to file cache /tmp/jieba.cache
  3. Loading model cost 0.738 seconds.
  4. Prefix dict has been built successfully. # 接口调用的附加信息
  5. 疫情/ 中国民航/ 阻击战/ 航班/ 替代/ 快速反应/ 关键时刻/ 优势/ 领域/ 任务/

#本程序的作用是通过TF/IDF算法完成对文本的关键词提取,输出前十个关键词。
import math
import jieba
import jieba.posseg as psg
from gensim import corpora, models
from jieba import analyse
import functoolsclass TfIdf(object):# 四个参数分别是:训练好的idf字典,默认idf值,处理后的待提取文本,关键词数量def __init__(self, idf_dic, default_idf, word_list, keyword_num):self.word_list = word_listself.idf_dic, self.default_idf = idf_dic, default_idfself.tf_dic = self.get_tf_dic()self.keyword_num = keyword_numdef get_tf_dic(self):tf_dic = {}# 任务:完成word_list的tf值的统计函数,将结果存储到tf_dic变量中# ********** Begin *********#for w in self.word_list:tf_dic[w] = tf_dic.get(w,0.0)+1.0tf_cnt = len(self.word_list)for k,v in tf_dic.items():tf_dic[k] = float(v) / tf_cnt			# ********** End **********#return tf_dic# 按公式计算tf-idfdef get_tfidf(self):tfidf_dic = {}for word in self.word_list:idf = self.idf_dic.get(word, self.default_idf)tf = self.tf_dic.get(word, 0)tfidf = tf * idftfidf_dic[word] = tfidftfidf_dic.items()# 根据tf-idf排序,去排名前keyword_num的词作为关键词for k, v in sorted(tfidf_dic.items(), key=functools.cmp_to_key(cmp), reverse=True)[:self.keyword_num]:print(k + "/ ", end='')print()#排序函数,用于topK关键词的按值排序
def cmp(e1, e2):import numpy as npres = np.sign(e1[1] - e2[1])if res != 0:return reselse:a = e1[0] + e2[0]b = e2[0] + e1[0]if a > b:return 1elif a == b:return 0else:return -1

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

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

相关文章

浅谈Web性能测试(原创)

一、性能测试不是什么高技术的活: 说到性能测试,很多工作时间较短的新同事或者应届生就很害怕。 为什么害怕,因为感觉无从下手,不知道该做什么、怎么做、做到什么程度? 一听性能测试首先想到的是各种专业的性能测试…

ThingsKit物联网平台功能解析

随着物联网技术的飞速发展,各种物联网平台应运而生,为设备管理和数据集成提供了强大的支持。ThingsKit物联网平台以其全面的功能和灵活的配置,成为行业中的一大亮点。本文将详细解析ThingsKit物联网平台的功能清单,带您深入了解该…

oracle数据库默认表空间详解

文章目录 oracle数据库默认表空间列表 oracle数据库默认表空间列表 系统表空间(System Tablespace) 系统表空间包含了系统级别的元数据,如数据字典、系统表和存储过程等。例如SYSTEM表空间用于保存数据库的数据字典、PL/SQL程序的源代码和解释…

【C语言】分支(选择)和循环语句

目录 简述选择语句简述if语句单if结构语法格式 if-else结构语法结构 语法结构 循环结构break和continuewhile循环语法结构 for循环语法结构 do while循环语法结构 简述 在c语言中分支和循环语句是极其重要的,就像生活中你难免要做一些判断和循环往复做一些事。 选…

SpringBoot 中的参数校验:构建健壮应用的基石

前言 在开发Web应用时,处理用户输入是不可避免的一环。然而,用户输入往往充满不确定性,可能是格式不正确、类型不匹配,甚至包含恶意内容。为了确保应用的稳定性和安全性,对输入参数进行有效校验显得尤为重要。Spring …

【触想智能】工业平板电脑在新能源领域上的应用分析

工业平板电脑是一种具有高性能和稳定性的计算机设备,适用于在恶劣环境下进行数据采集、运营管理和现场操作。 随着新能源技术的快速发展,工业平板电脑不断地得到应用,并且已成为新能源领域中的重要工具之一。本文将从四个方面探讨工业平板电脑…

WSO2 products 文件上传漏洞(CVE-2022-29464)

前言 CVE-2022-29464 是一个影响多个 WSO2 产品的严重远程代码执行(RCE)漏洞。这些产品包括 WSO2 API Manager、WSO2 Identity Server 和 WSO2 Enterprise Integrator 等。由于用户输入验证不当,该漏洞允许未经身份验证的攻击者在服务器上上…

代码随想录算法训练营第九天|151.翻转字符串里的单词、右旋字符串、28. 实现 strStr()、459.重复的子字符串

打卡Day9 1.151.翻转字符串里的单词2.右旋字符串3.28. 实现 strStr()4.459.重复的子字符串 1.151.翻转字符串里的单词 题目链接:翻转字符串里的单词 文档讲解: 代码随想录 思路:首先,移除多余的空格;然后&#xff0c…

TensorRT学习(二)TensorRT使用教程(Python版)

本文适合快速了解TensorRT使用的整体流程,具体细节还是建议参考TensorRT的官方文档。 加速原理: 加速原理比较复杂,它将会根据显卡来优化算子,以起到加速作用(如下图所示)。简单的来说,就是类似于你出一个公式1+1+1,而你的显卡支持乘法,直接给你把这个公式优化成了1*…

生成式AI赋能金融信贷:减少信用评分偏差

信用评分在确定谁获得信贷以及以何种条件获得信贷方面发挥着关键作用。然而,尽管这一点很重要,但传统的信用评分系统长期以来一直受到一系列关键问题的困扰——从偏见和歧视,到有限的数据考虑和可扩展性挑战。例如,一项针对美国贷…

【代码随想录】【算法训练营】【第56天】 [卡码98]所有可达路径

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 56,周二,继续ding~ 题目详情 [卡码98] 所有可达路径 题目描述 卡码98 所有可达路径 解题思路 前提: 思路: 重点: 代码实现 C语言…

【JPCS出版,PSESG 2024,8月16-18】2024年电力系统工程与智能电网国际学术会议

2024年电力系统工程与智能电网国际学术会议(PSESG 2024)于2024年8月16-18日在中国北京隆重召开。 会议旨在为从事“电力系统工程”、“智能电网”、“储能技术”等领域的专家学者、工程技术人员、研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势&#xf…

GPT-5即将登场:AI赋能下的未来工作与日常生活新图景

随着OpenAI首席技术官米拉穆拉蒂在近期采访中的明确表态,GPT-5的发布已不再是遥不可及的梦想,而是即将在一年半后与我们见面的现实。这一消息无疑在科技界乃至全社会引发了广泛关注和热烈讨论。从GPT-4到GPT-5的飞跃,被形容为从高中生到博士生…

SpringBoot之内容协商

现象演示 假设有一个需求是根据终端的不同,返回不同形式的数据,比如 PC 端需要以 HTML 格式返回数据,APP、小程序端需要以 JSON 格式返回数据。这时我们是 coding 几个相似的接口?还是在一个接口里面做复杂判断处理?两…

SQL执行慢排查以及优化思路

数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?我把思考的流程整理成了下面这张图。 整个流程划分成了观察(Show status)和行动(Action)两个部分。字母 S 的部分代表观察&#xf…

LSH算法:高效相似性搜索的原理与Python实现I

局部敏感哈希(LSH)技术是快速近似最近邻(ANN)搜索中的一个关键方法,广泛应用于实现高效且准确的相似性搜索。这项技术对于许多全球知名的大型科技公司来说是不可或缺的,包括谷歌、Netflix、亚马逊、Spotify…

分文件编译(简单学生系统)

定义学生基本信息 ①输出所有学生信息 ②删除某个学生后,输出所有学生信息 ③修改某个学生信息后,输出所有学生信息 ④查找某个学生的信息 main.c #include"k11*.h" int main(int argc, const char *argv[]) {struct student p[4]{{"…

Echarts-柱状图

1.案例1 1.1代码 option = {textStyle: {color: #fff // 标题文字颜色为白色},tooltip: {trigger: axis,axisPointer: {type: shadow,},},legend: {textStyle: {color: white}},grid: {top: 15%,left: 4%,right: 4%,bottom: 7%,containLabel: true},xAxis:{type: category,da…

仿全民飞机大战射击网页游戏源码

仿全民飞机大战设计网页游戏源码,画质精美的飞机大战手机端游戏源码 微信扫一扫免费下载源码