BERTopicの調査
What's this
BERTopicを使う上で詰まったことや調べたことを記録するスクラップです。
背景
BERTを使ってトピックモデルや動的トピックモデリングができるBERTopicを使って論文を書いています。
参考
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)を活用したトピックモデリング手法であり、トピックを説明する上で重要な語句を残しながら、解釈しやすいトピックを生成する高密度なクラスタを作成します。
使い方
以下のように書くだけ
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モデルを指定して何度かトピック生成を試すのが望ましいとのこと
【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
がどういう処理を通して作られるのかを調べるために見た。作られるというより、埋め込み表現からトピックをよく説明しているドキュメントにフラグをつけているだけだった