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

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])
http://www.xdnf.cn/news/12010.html

相关文章:

  • 直播美颜SDK深度解析:AI人脸美型与智能美白技术揭秘
  • c++ 命名规则
  • 浅析EXCEL自动连接PowerBI的模板
  • SCI论文核心框架与写作要素小结
  • Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)
  • Java面试高频核心内容
  • GRU 参数梯度推导与梯度消失分析
  • 技术文章大纲:SpringBoot自动化部署实战
  • 3. 表的操作
  • WARNING! The remote SSH server rejected x11 forwarding request.
  • webpack打包学习
  • JavaScript基础:运算符
  • Dataguard switchover遇到ORA-19809和ORA-19804报错的问题处理
  • Cross-Attention:注意力机制详解《一》
  • Java 反汇编
  • 【原理解析】为什么显示器Fliker dB值越大,闪烁程度越轻?
  • React---扩展补充
  • 祝贺XC3576H通过银河麒麟桌面操作系统的兼容性测试,取得麒麟软件互认证证书
  • 结节性甲状腺肿全流程大模型预测与决策系统总体架构设计方案大纲
  • Spring BeanPostProcessor
  • 【计算机组成原理】SPOOLing技术
  • PowerBI企业运营分析—全动态盈亏平衡分析
  • AI IDE 正式上线!通义灵码开箱即用
  • 驱动:字符设备驱动注册、读写实操
  • 用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64平台)
  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • PWM 相关知识整理
  • 【大模型:知识图谱】--4.neo4j数据库管理(cypher语法1)
  • 振动力学:欧拉-伯努利梁的弯曲振动(考虑轴向力作用)
  • Qt Quick快速入门笔记