LDA模型处理语料时TypeError错误排查与解决请求
解决LDA主题识别时排序触发的TypeError问题
问题场景
用训练好的lda_model配合id2word.doc2bow(text)生成的corpus识别文章主导主题时,执行排序代码触发报错:
TypeError: '<' not supported between instances of 'int' and 'tuple'
打印row发现它是包含三个元素的元组,第一个元素是主题-概率列表,后两个为其他关联结构。
错误原因
排序操作误作用于整个row元组,而非元组内的主题-概率列表部分。直接对row排序时,Python会尝试比较元组里的不同类型元素(比如int和tuple),导致类型不兼容错误。
解决方案
将排序目标锁定到row的第一个元素(主题-概率列表),针对列表内的(主题ID, 概率)元组按概率值排序:
错误代码示例
# 错误:直接对整个row元组排序 sorted_result = sorted(row)
正确代码示例
# 提取主题-概率列表 topic_prob_list = row[0] # 按概率降序排序,获取主导主题 sorted_topics = sorted(topic_prob_list, key=lambda x: x[1], reverse=True) # 取排序后的第一个元素作为主导主题 dominant_topic = sorted_topics[0]
说明
row[0]返回的是形如[(主题ID1, 概率1), (主题ID2, 概率2), ...]的列表,对这个列表排序时,通过key=lambda x: x[1]指定按元组的第二个元素(概率值)排序,reverse=True实现降序排列,就能正确得到概率最高的主导主题。
内容的提问来源于stack exchange,提问作者shan
相关产品推荐
相关产品推荐

