当前位置: 首页 > news >正文

OD 算法题 B卷【查找舆情热词】

文章目录

  • 查找舆情热词

查找舆情热词

  • 将每篇文章处理为两个字符串,一个标题,一个正文串;
  • 对所有新闻中出现的词语进行处理,输出出现频率最高的topN个词语作为热词;
  • 标题中的词语频率系数为3,正文中词语的频率系数为1,结果按照词语频率从高到低排序,当词语出现频率相同时,在标题中出现的频率次数高的排在前面;若仍相同,则按照词语在标题中的先后顺序排序,如果仍相同,则按照词语在正文中为先后顺序排序;

输入描述:
第一行输入正整数N和文章数M;
后续的2M行,每两行为一篇文章的标题串、正文串;
参数限制如下:
0<N<1000, 0<M<100000, 0<每篇文章的词语数<5000

输出描述:
输出出现频率最高的topN个词语,以空格分隔

示例1
输入:
3 2
xinguan feiyan xinzeng bendi quezhen anli
ju baodao chengdu xinzeng xinguan feiyan bendi quezhen anli yili shenzhen
xinzeng bendi quezhen anli liangli yiqing zhhengti kongzhi lianghao
xinguan yimiao linchuang shiyan
wuzhong xinguan yimiao tongguo sanqi linchuang shiyan xiaoguo lianghao

输出:
xinguan xinzeng bendi

python实现

  • 简单的词语统计;
  • 每个词语包含信息 [词语,[总词频次,标题中词频次,标题顺序,正文顺序]]
  • 正文中的词语在标题中的词频不累加;
  • 标题顺序、正文顺序基于索引表示,且所有标题共用一套索引,所有正文共用一套索引;
  • 总词频降序,标题词频降序,标题顺序升序,正文顺序升序;
  • 取topN

n, m = list(map(int, input().strip().split()))# key为单词,value为数组
# 数组的信息: 单词出现总次数 标题中出现次数 标题中的顺序 正文中的顺序
word_freq = {}
title_order = 0
text_order = 0
for i in range(m):  # 输出m篇文章# 统计标题词频title = input().strip().split()for j in range(len(title)):if title[j] not in word_freq:# 初始化word_freq[title[j]] = [0, 0, title_order, -1]  # 标题中的索引位置# 更新当前单词的信息info = word_freq[title[j]]# 若单词是首先出现在正文中if info[2] == -1:info[2] = title_order# 标题中出现的词语频率系数为3,正文中出现的词语频率系数为1info[0] += 1*3info[1] += 1   # 标题中1 就是1title_order += 1  # 写一个标题位置,索引+1# 其次是正文text = input().strip().split()for j in range(len(text)):if text[j] not in word_freq:word_freq[text[j]] = [0, 0, -1, text_order]info = word_freq[text[j]]if info[3] == -1:info[3] = text_orderinfo[0] += 1  # 总频次 + 1# 正文中的单词在标题中的频次为0text_order += 1# 组织数组
word_list = []
for word in word_freq:word_list.append([word, word_freq[word]])
# 排序   总频率降序,
word_list = sorted(word_list, key=lambda x: (-x[1][0], -x[1][1], x[1][2], x[1][3]))# 输出
output_str = ""
for i in range(n):output_str += str(word_list[i][0]) + " "print(output_str[:-1])

相关文章:

  • AI 时代下语音与视频伪造的网络安全危机
  • 区块链安全攻防战:51% 攻击与 Sybil 攻击的应对策略
  • AlphaFold3服务器安装与使用(非docker)(1)
  • window 显示驱动开发-提供视频解码功能(三)
  • C++课设:银行账户管理系统
  • 智慧货运飞船多维度可视化管控系统
  • 华为设备OSPF配置与实战指南
  • 内网穿透之Linux版客户端安装(神卓互联)
  • Docker 常用命令详解
  • 大模型高效提示词Prompt编写指南
  • 电脑频繁黑屏怎么办
  • 探索分布式存储与通信:去中心化共享及通訊(DSAC)
  • 以人类演示视频为提示,学习可泛化的机器人策略
  • 技术文档的降维打击:3大原则+5步结构+CSDN流量密码
  • springboot--实战--大事件--文章分类接口开发详解
  • 从Node.js到React/Vue3:流式输出技术的全栈实现指南
  • 【设计模式-4.9】行为型——命令模式
  • CentOS 7 修改为静态 IP 地址完整指南
  • 一起学Spring AI:核心概念
  • 高防服务器价格高原因分析
  • 网站建设审核需要多长时间/360广告投放平台
  • 做建网站的工作一年赚几百万/系统优化是什么意思
  • app跟网站的区别是什么/友情链接平台网站
  • 视频网站做推广有没有效果/深圳市社会组织总会
  • .vip域名做网站/深圳aso优化
  • 网站开发的项目/佛山网站建设方案咨询