truncatedsvd做主题分析时,消极主题词中好吃和难吃在在一个主题中

下午好🌅🌅🌅
本答案参考ChatGPT-3.5
问题:使用truncatedsvd做主题分析时,消极主题词中“好吃”和“难吃”不应该在同一个主题中。应如何解决?
解决方案:
更改主题数: 通过增加主题数量,将更多的主题纳入考虑,从而使“好吃”和“难吃”这两个主题被分开。需要注意的是,过多的主题数量可能会使分析结果不够准确。
剔除干扰词: 可以通过手动在原始数据中把“好吃”和“难吃”这两个词去掉,然后重新进行主题分析。
权重调整: 可以在分析过程中给“好吃”和“难吃”这两个词赋予不同的权重,使得被赋予较高权重的词会更有可能被分到不同的主题中。
尝试其他算法: 如果以上方法都不起作用,可以尝试使用其他主题分析算法,如LDA等。
修改后的代码片段:
# 更改主题数量
tsvd = TruncatedSVD(n_components=5, algorithm='randomized', n_iter=100, random_state=1)
neg_topics = tsvd.fit_transform(tv_neg_data)
# 剔除干扰词
# 原始数据不在代码中给出,需手动修改
# tv_neg_data里应该是经过预处理过的文档-词矩阵
tv_neg_data_modified = tv_neg_data.copy()
tv_neg_transfer_modified = CountVectorizer(stop_words=['好吃', '难吃'])
tv_neg_data_modified = tv_neg_transfer_modified.fit_transform(tv_neg_data_modified)
tsvd = TruncatedSVD(n_components=3, algorithm='randomized', n_iter=100, random_state=1)
neg_topics = tsvd.fit_transform(tv_neg_data_modified)
# 权重调整
# 通过设置CountVectorizer里的stop_words参数,将'好吃'和'难吃'分别赋予不同的权重
# 代码如下:CountVectorizer(stop_words={'好吃': 2, '难吃': 8})