Open4

BERTopicの調査

kentkent

BERTopicとは

BERTopic is a topic modeling technique that leverages BERT embeddings and c-TF-IDF to create dense clusters allowing for easily interpretable topics whilst keeping important words in the topic descriptions.
BERTopicは、BERTによるエンベディング表現とc-TF-IDF(BERTopicのために拡張されたTF-IDF)を活用したトピックモデリング手法であり、トピックを説明する上で重要な語句を残しながら、解釈しやすいトピックを生成する高密度なクラスタを作成します。

https://maartengr.github.io/BERTopic/api/bertopic.html#bertopic._bertopic.BERTopic

kentkent

使い方

以下のように書くだけ

from bertopic import BERTopic
from sklearn.datasets import fetch_20newsgroups

docs = fetch_20newsgroups(subset='all')['data']
topic_model = BERTopic()
topics, probabilities = topic_model.fit_transform(docs)

自分でEmbeddingモデルを指定したい場合は以下

from bertopic import BERTopic
from sklearn.datasets import fetch_20newsgroups
from sentence_transformers import SentenceTransformer

docs = fetch_20newsgroups(subset='all')['data']
sentence_model = SentenceTransformer("all-MiniLM-L6-v2")
topic_model = BERTopic(embedding_model=sentence_model)

次元削減に用いられるUMAPは確率的な性質を持つため、独自のEmbeddingモデルを指定して何度かトピック生成を試すのが望ましいとのこと

https://maartengr.github.io/BERTopic/api/bertopic.html#bertopic

kentkent

【API】get_document_info(self, docs, df=None, metadata=None)

BERTopic().get_document_info(docs) メソッドについて

Get information about the documents on which the topic was trained including the documents themselves, their respective topics, the name of each topic, the top n words of each topic, whether it is a representative document, and probability of the clustering if the cluster model supports it.
There are also options to include other meta data, such as the topic distributions or the x and y coordinates of the reduced embeddings.
トピックの学習に使用されたドキュメントに関する情報を取得します。この情報には、ドキュメント自体、それぞれのトピック、各トピックの名前、各トピックの上位n個の単語、そのドキュメントが代表的なものであるかどうか、およびクラスターモデルが対応している場合にはクラスタリングの確率が含まれます。
また、トピック分布や次元削減された埋め込みのx座標とy座標など、他のメタデータを含めるオプションもあります。

representative documentがどういう処理を通して作られるのかを調べるために見た。作られるというより、埋め込み表現からトピックをよく説明しているドキュメントにフラグをつけているだけだった