你好@MaartenGr,
感谢你提供的优质软件包和所有文档。我学到了很多!
只是有几个需要澄清的问题。
- topic_embeddings_
从文档中,topic_embeddings
的计算方法如下:
topic_embeddings_:每个主题的嵌入。它是基于主题中的词嵌入的加权平均值计算的。
但我也看到了一个新的问题,你提到如果我们使用embedding_model,topic_embeddings
是簇的质心。这里簇的质心是通过计算簇中所有句子嵌入的平均值得到的吗? - 找到前n个代表性文档:
从#848中,你提到:
在BERTopic v0.14版本中,无论您使用的是HDBSCAN还是其他聚类算法,所有代表性文档的提取方式都是相同的。对于每个簇,我们会抽取一个500个随机样本的子集,然后使用c-TF-IDF对这些文档进行评分。将结果与主题的c-TF-IDF值进行比较,以根据文档与主题的接近程度对文档进行排名。
由于我使用的是v0.15,这意味着我为每个主题获得的前50个代表性文档是通过将主题的c-TF-IDF值与每个文档的c-TF-IDF值进行比较而不是将主题嵌入(句子嵌入的平均值)与每个句子的嵌入进行比较来提取的。这是正确的吗? - 新/现有文档的主题分布
我还对现有文档的主题分布感到好奇。我注意到有两种方法可以使用.approximate_distribution()
可视化主题分布。第一种是在标记集和所有主题之间比较c-TF-IDF计算。第二种是选择embedding_model来进行这种比较。这是否意味着要将topic_embedding(此主题内句子嵌入的平均值)与标记集嵌入进行比较?
此外,当我检查句子1的主题分布时,它最接近的主题与使用c-TF-IDF方法分配的主题不同。例如,它最接近的主题是Topic2,但分配给它的主题是Topic3。在使用嵌入方法时,这种情况是否也存在?另外,使用嵌入方法时,主题和句子嵌入之间的余弦相似度非常低(大部分在0.006左右)。这是否会成为一个问题?
感谢你的帮助!
1条答案
按热度按时间bvhaajcl1#
感谢您的夸奖!
我注意到了一个新问题,您提到在使用embedding_model时,如果我们使用topic_embeddings,那么topic_embeddings是否是簇的质心?这里的簇质心是通过计算簇内所有句子嵌入的平均值得到的吗?
很好的发现!这是旧文档,应该更新。通常情况下,它是基于输入嵌入的簇质心。但是,如果您合并了它们,它们也可以是主题嵌入的加权平均值。最后,如果没有可用的嵌入(例如在线主题建模),则使用关键词的嵌入。
您可以在以下代码中找到完整代码:
BERTopic/bertopic/_bertopic.py
第3515行 in 62e97dd
| | def_create_topic_vectors(self, documents: pd.DataFrame=None, embeddings: np.ndarray=None, mappings=None): |
由于我使用的是v0.15,这意味着我为每个主题获得的前50个代表性文档是通过比较主题的c-TF-IDF值与每个文档的c-TF-IDF值而不是比较主题嵌入(句子嵌入的平均值)来提取的。这是正确的吗?
是的,您是从一个随机子集中选择并计算该子集中的c-TF-IDF值,然后将它们与彼此进行比较。由于c-TF-IDF计算速度比嵌入模型快得多,因此这些计算可以快速完成,而无需嵌入文档或跟踪嵌入。
我还对现有文档的主题分布很好奇。我注意到有两种方法可以使用.approximate_distribution()来可视化主题分布。第一种是在标记集和所有主题之间比较c-TF-IDF计算。第二种是选择embedding_model来进行这种比较。这是否意味着将topic_embedding(此主题内句子嵌入的平均值)与标记集嵌入进行比较?
是的,它将主题嵌入(质心)与每个标记集嵌入进行比较。
此外,当我检查句子1的主题分布时,其最近的主题与使用c-TF-IDF方法分配给HDBSCAN的主题不同。例如,它的最近主题是Topic2,但其分配的主题是Topic3。对于嵌入方法是否也是这种情况?
approximate_distribution
中的方法只是近似值,不会完全代表您使用HDBSCAN得到的结果。此外,即使HDBSCAN的概率也不一定与其内部分配相匹配。此外,使用嵌入方法的主题和句子嵌入之间的余弦相似度非常低(大部分约为0.006)。这会是一个问题吗?
当您不知道模型及其概率分布时,绝对值告诉您的信息非常有限。这在很大程度上取决于您的用例。一般来说,如果分配仍然有意义,那么绝对值并不重要。