网站开发合同封面,桂林旅游网站制作,专门做网络营销的公司,苏州工业园区外国语学校一、说明 一般来说#xff0c;BERTopic 在开箱即用的模型中工作得很好。但是#xff0c;当您有数百万个数据要处理时#xff0c;使用基本模型处理数据可能需要一些时间。在这篇文章中#xff0c;我将向您展示如何微调BERTopic中的一些参数并比较它们的结果。让我们潜入。 二… 一、说明 一般来说BERTopic 在开箱即用的模型中工作得很好。但是当您有数百万个数据要处理时使用基本模型处理数据可能需要一些时间。在这篇文章中我将向您展示如何微调BERTopic中的一些参数并比较它们的结果。让我们潜入。 二、BERTopic 基本型号 我们首先检查类 BERTopic 中有哪些参数。有关详细检查请查看此处的文件BERTopic。在官方文档中对每个参数及其默认值都有说明。在这里我想挑一些参数来提及因为这些参数在表示文档中的主题方面起着关键作用。 class BERTopic:def __init__(self,language: str english,top_n_words: int 10,n_gram_range: Tuple[int, int] (1, 1),min_topic_size: int 10,nr_topics: Union[int, str] None,low_memory: bool False,calculate_probabilities: bool False,seed_topic_list: List[List[str]] None,embedding_modelNone,umap_model: UMAP None,hdbscan_model: hdbscan.HDBSCAN None,vectorizer_model: CountVectorizer None,ctfidf_model: TfidfTransformer None,representation_model: BaseRepresentation None,verbose: bool False,)self.XXXself.XXX...... n_gram_range默认为11即分别产生“新”和“约克”等主题词。如果要显示“纽约”可以将此参数发送到 12。umap_modelUMAP均匀流形近似和投影是一种降维算法通常用于高维数据的可视化。它的工作原理是查找保留原始高维空间结构的数据的低维表示形式。hdbscan_modelHDBSCAN基于分层密度的带噪声应用程序空间聚类是一种基于密度的聚类算法可以识别数据集中任意形状和大小的聚类。它的工作原理是在数据中查找高密度区域并将其扩展为集群同时还识别不属于任何集群的噪声点。 三、微调参数 我们已经了解了参数是什么以及它们的实际作用。现在让我们对它们进行微调并将结果与开箱即用的模型进行比较。同样我们将使用我们之前准备的卡塔尔世界杯数据。如果您还没有下载 umap 和 hbdscan请 pip 安装。 # Base Modelimport pandas as pd
import pickle
with open(world_cup_tweets.pkl, rb) as f:data pickle.load(f)data data.Tweet_processed.to_list()from bertopic import BERTopic
model_B BERTopic(languageenglish, calculate_probabilitiesTrue, verboseTrue)
topics_B, probs_B topic_model.fit_transform(data) # Fine-tuned Modelimport pandas as pd
import pickle
with open(world_cup_tweets.pkl, rb) as f:data pickle.load(f)data data.Tweet_processed.to_list()from umap import UMAP
from hdbscan import HDBSCANumap_model UMAP(n_neighbors3, n_components3, min_dist0.05)
hdbscan_model HDBSCAN(min_cluster_size80, min_samples40,gen_min_span_treeTrue,prediction_dataTrue)
from bertopic import BERTopicmodel_A BERTopic(umap_modelumap_model,hdbscan_modelhdbscan_model,top_n_words10,languageenglish,calculate_probabilitiesTrue,verboseTrue,n_gram_range(1, 2)
)
topics_A, probs_A model.fit_transform(data) UMAP n_neighbors3此参数确定 UMAP 用于近似数据局部结构的最近邻数。在这种情况下UMAP将在构造嵌入时查看每个数据点的三个最近邻。n_components3指定嵌入空间中的维数。默认情况下UMAP 会将数据的维数减少到 2 维但在这种情况下它会将其减少到 3 维。min_dist0.05此参数控制嵌入空间中点之间的最小距离。较高的min_dist值将导致点之间的空间越大这可以改善聚类的分离。 HDBSCAN min_cluster_size80此参数指定形成聚类所需的最小点数。点少于此阈值的聚类将被标记为噪声。min_samples40此参数确定将点视为核心点所需的邻域样本数。核心点用于构建聚类非核心点的点被归类为噪声。gen_min_span_treeTrue此参数告诉 HDBSCAN 在聚类之前构造输入数据的最小生成树。这有助于识别仅由几个点连接的聚类其他聚类算法可能会遗漏这些点。prediction_dataTrue此参数指示 HDBSCAN 存储有关数据的其他信息例如每个群集中每个点的成员资格概率。此信息可用于下游分析和可视化。 四、比较结果 基本型号 作者创建的基本模型 微调模型 作者创建的微调模型 显然在基本模型中生成了更多主题这解释了处理大量文本需要很长时间的事实。同时在微调模型中根据参数中的设置创建的主题较少。 对于那些对结果如何随参数设置的不同组合而变化感兴趣的人。我将示例代码放在这里您可以更改参数以检查不同的结果。 from bertopic import BERTopic
from umap import UMAP
from hdbscan import HDBSCAN# Define a list of parameters to try for UMAP
umap_params [{n_neighbors: 15, n_components: 2, min_dist: 0.1},{n_neighbors: 10, n_components: 2, min_dist: 0.01},{n_neighbors: 3, n_components: 2, min_dist: 0.001}
]# Define a list of parameters to try for HDBSCAN
hdbscan_params [{min_cluster_size: 100, min_samples: 100},{min_cluster_size: 50, min_samples: 70},{min_cluster_size: 5, min_samples: 50}
]# Loop over the parameter combinations and fit BERTopic models
for umap_param in umap_params:for hdbscan_param in hdbscan_params:# Create UMAP and HDBSCAN models with the current parameter combinationumap_model UMAP(**umap_param)hdbscan_model HDBSCAN(**hdbscan_param, gen_min_span_treeTrue, prediction_dataTrue)# Fit a BERTopic model with the current parameter combinationmodel BERTopic(umap_modelumap_model,hdbscan_modelhdbscan_model,top_n_words10,languageenglish,calculate_probabilitiesTrue,verboseTrue,n_gram_range(1, 2))topics, probs model.fit_transform(data)# Visualize the hierarchy and save the figure to an HTML filefig model.visualize_hierarchy()fig.write_html(fmodel_umap_{umap_param}_hdbscan_{hdbscan_param}.html)五、后记 关于BertTopic的应用知识点还很多我们将在另外的文章中逐步介绍之。谢谢阅读 参考资料 伯特 主题建模 深度学习 数据科学 蟒