You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中获取各主题下概率最高的唯一词汇?

获取各主题下概率最高的唯一词汇实现方案

基础场景:每个主题取自身概率最高的词汇

如果只需要每个主题内部概率排名第一的词汇,无需考虑跨主题重复,直接对每个主题的词汇-概率列表按概率降序排序,取第一个元素的词汇即可。

代码示例(Python)

# 模拟输入数据:键为主题名,值为(词汇, 概率)的列表
topic_word_probs = {
    "科技": [("人工智能", 0.92), ("机器学习", 0.78), ("大数据", 0.65)],
    "美食": [("火锅", 0.88), ("奶茶", 0.72), ("烧烤", 0.59)],
    "旅游": [("海岛", 0.85), ("古镇", 0.70), ("雪山", 0.61)]
}

# 提取每个主题的最高概率词汇
top_words = {}
for topic, items in topic_word_probs.items():
    # 按概率降序排序,取第一个词汇
    top_word = sorted(items, key=lambda x: x[1], reverse=True)[0][0]
    top_words[topic] = top_word

print(top_words)
# 输出:{'科技': '人工智能', '美食': '火锅', '旅游': '海岛'}

进阶场景:确保各主题的最高词汇全局唯一

如果要求所有主题选出的最高词汇不能重复,需要按主题最高概率的优先级排序,优先保留概率更高的主题的词汇,其他主题依次选取次高概率且未被使用的词汇。

代码示例(Python)

topic_word_probs = {
    "科技": [("人工智能", 0.92), ("机器学习", 0.78), ("大数据", 0.65)],
    "互联网": [("人工智能", 0.85), ("云计算", 0.70), ("区块链", 0.58)],
    "美食": [("火锅", 0.88), ("奶茶", 0.72), ("烧烤", 0.59)]
}

unique_top_words = {}
used_words = set()

# 先把主题按自身最高概率从高到低排序,优先处理权重高的主题
sorted_topics = sorted(
    topic_word_probs.items(),
    key=lambda x: sorted(x[1], key=lambda y: y[1], reverse=True)[0][1],
    reverse=True
)

for topic, items in sorted_topics:
    # 遍历当前主题的词汇(按概率降序),找到第一个未被使用的词汇
    for word, prob in sorted(items, key=lambda x: x[1], reverse=True):
        if word not in used_words:
            unique_top_words[topic] = word
            used_words.add(word)
            break

print(unique_top_words)
# 输出:{'科技': '人工智能', '美食': '火锅', '互联网': '云计算'}

关键思路总结

  • 排序核心:对每个主题的词汇列表按概率降序排列,确保优先获取概率高的词汇。
  • 全局唯一处理:通过集合记录已使用的词汇,结合主题优先级排序,避免重复词汇被多个主题选中。
  • 扩展性:如果使用其他编程语言,逻辑一致——排序取最值+集合去重校验即可。

内容的提问来源于stack exchange,提问作者Sari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:18:18