による写真 ミケチー・エスパラゴサ
私たちは毎日ほとんどの時間をラベルのないテキストを扱っており、教師あり学習アルゴリズムを使用してデータから情報を抽出することはまったくできません。 自然言語のサブフィールドは、大量のテキストの根底にある構造を明らかにすることができます。 この分野はトピック モデリングと呼ばれ、テキストからトピックを抽出することに特化しています。
これに関連して、潜在的ディリクレ配分法や非負行列因数分解などの従来のアプローチは、単語のバッグに基づいているため、単語間の関係をうまく捉えられないことが実証されました。
このため、事前にトレーニングされた言語モデルを利用してトピックを生成することでこれらの欠点に対処する、Top2Vec と BERTopic という XNUMX つの有望なアプローチに焦点を当てます。 始めましょう!
Top2Vec は、事前トレーニング済みの単語ベクトルを使用し、意味のある埋め込みトピック、ドキュメント、および単語ベクトルを作成することにより、テキストからトピックを自動的に検出できるモデルです。
このアプローチでは、トピックを抽出する手順をさまざまなステップに分割できます。
- セマンティック埋め込みの作成: 一緒に埋め込まれたドキュメントと単語ベクトルが作成されます。 アイデアは、類似したドキュメントは埋め込みスペース内でより近くにある必要があり、類似していないドキュメントはそれらの間で離れている必要があるということです。
- ドキュメント埋め込みの次元を減らす: 次元削減アプローチの適用は、高次元空間を削減しながら、ドキュメントの埋め込みの変動性のほとんどを保持するために重要です。 さらに、各点が文書ベクトルを表す高密度領域の識別が可能になります。 UMAP は、高次元データのローカル構造とグローバル構造を保持できるため、このステップで選択される典型的な次元削減アプローチです。
- ドキュメントのクラスターを特定する: 密度ベースのクラスタリング アプローチである HDBScan を適用して、類似したドキュメントの密な領域を見つけます。 各ドキュメントは、密集したクラスターに属していない場合はノイズとして割り当てられ、密集した領域に属している場合はラベルが割り当てられます。
- 元の埋め込み空間で重心を計算する: 重心は、縮小された埋め込み空間ではなく、高次元空間を考慮して計算されます。 古典的な戦略は、前のステップで HDBSCAN を使用して取得した、密集した領域に属するすべてのドキュメント ベクトルの算術平均を計算することです。 このようにして、クラスタごとにトピック ベクトルが生成されます。
- 各トピック ベクトルの単語を検索します。: ドキュメント ベクトルに最も近い単語ベクトルが意味的に最も代表的です。
Top2Vec の例
このチュートリアルでは、で利用可能なデータセットからマクドナルドの否定的なレビューを分析します。 データ.ワールド. これらのレビューからトピックを特定することは、多国籍企業がデータによって提供される米国の場所にあるこのファスト フード チェーンの製品と組織を改善するのに役立ちます。
import pandas as pd
from top2vec import Top2Vec file_path = "McDonalds-Yelp-Sentiment-DFE.csv"
df = pd.read_csv( file_path, usecols=["_unit_id", "city", "review"], encoding="unicode_escape",
)
df.head()
docs_bad = df["review"].values.tolist()
2 行のコードで、前に説明した topXNUMXvec のすべてのステップを実行します。
topic_model = Top2Vec( docs_bad, embedding_model="universal-sentence-encoder", speed="deep-learn", tokenizer=tok, ngram_vocab=True, ngram_vocab_args={"connector_words": "phrases.ENGLISH_CONNECTOR_WORDS"},
)
Top2Vec の主な引数は次のとおりです。
- docs_bad: 文字列のリストです。
- ユニバーサル センテンス エンコーダー: 選択された事前トレーニング済みの埋め込みモデルです。
- deep-learn: 生成されるドキュメント ベクトルの品質を決定するパラメーターです。
topic_model.get_num_topics() #3
topic_words, word_scores, topic_nums = topic_model.get_topics(3) for topic in topic_nums: topic_model.generate_topic_wordcloud(topic)
最も
ワード クラウドから、トピック 0 は「サービスが遅い」、「ひどいサービス」、「注文が間違っている」など、マクドナルドのサービスに関する一般的な苦情に関するものであると推測できますが、トピック 1 と 2 はそれぞれ朝食用食品 (マックマフィン、ビスケット、卵)とコーヒー(アイスコーヒーとカップコーヒー)。
次に、wrong と slow の XNUMX つのキーワードを使用してドキュメントを検索します。
( documents, document_scores, document_ids,
) = topic_model.search_documents_by_keywords( keywords=["wrong", "slow"], num_docs=5
)
for doc, score, doc_id in zip(documents, document_scores, document_ids): print(f"Document: {doc_id}, Score: {score}") print("-----------") print(doc) print("-----------") print()
出力:
Document: 707, Score: 0.5517634093633295
-----------
horrible.... that is all. do not go there.
----------- Document: 930, Score: 0.4242547340973836
-----------
no drive through :-/
----------- Document: 185, Score: 0.39162203345993046
-----------
the drive through line is terrible. they are painfully slow.
----------- Document: 181, Score: 0.3775083338082392
-----------
awful service and extremely slow. go elsewhere.
----------- Document: 846, Score: 0.35400602635951994
-----------
they have bad service and very rude
-----------
「BERTopic は、トランスフォーマーと c-TF-IDF を活用して密集したクラスターを作成するトピック モデリング手法であり、トピックの説明に重要な単語を保持しながら、簡単に解釈できるトピックを可能にします。」
名前が示すように、BERTopic は強力な変換モデルを利用して、テキストに含まれるトピックを識別します。 このトピック モデリング アルゴリズムのもう XNUMX つの特徴は、TF-IDF のクラスベースのバリエーションと呼ばれる TF-IDF のバリエーションの使用です。
Top2Vec と同様に、トピックの数を知る必要はありませんが、トピックを自動的に抽出します。
また、Top2Vec と同様に、異なるフェーズを含むアルゴリズムです。 最初の XNUMX つの手順は同じです。埋め込みドキュメントの作成、UMAP による次元削減、HDBScan によるクラスタリングです。
連続するフェーズは、Top2Vec から分岐し始めます。 HDBSCAN で密集した領域を見つけた後、各トピックは、単語がドキュメントに表示されるかどうかを考慮して、bag-of-words 表現にトークン化されます。 クラスターに属するドキュメントが一意のドキュメントと見なされた後、TF-IDF が適用されます。 そのため、トピックごとに、最も関連性の高い単語を特定し、c-TF-IDF が最も高くなるはずです。
BERTopic の例
同じデータセットで分析を繰り返します。
BERTopic を使用してレビューからトピックを抽出します。
model_path_bad = 'model/bert_bad'
topic_model_bad = train_bert(docs_bad,model_path_bad)
freq_df = topic_model_bad.get_topic_info()
print("Number of topics: {}".format( len(freq_df)))
freq_df['Percentage'] = round(freq_df['Count']/freq_df['Count'].sum() * 100,2)
freq_df = freq_df.iloc[:,[0,1,3,2]]
freq_df.head()
モデルによって返されるテーブルは、抽出された 14 のトピックに関する情報を提供します。 トピックは、-1 とラベル付けされた無視されるすべての外れ値を除いて、トピック ID に対応します。
ここで、各トピックに最も関連性の高い用語の視覚化、トピック間距離マップ、埋め込み空間の XNUMX 次元表現など、トピックのインタラクティブなグラフへの視覚化に関する最も興味深い部分に移りますトピック階層。
上位 XNUMX のトピックの棒グラフを表示してみましょう。 トピックごとに、c-TF-IDF スコアに基づいて降順にソートされた最も重要な単語を観察できます。 単語の関連性が高いほど、スコアが高くなります。
最初のトピックには、場所と食べ物、トピック 1 注文と待機、トピック 2 最悪とサービス、トピック 3 場所と汚い、広告などの一般的な単語が含まれています。
棒グラフを視覚化したら、トピック間距離マップを見てみましょう。 プロット内のトピックを視覚化するために、c-TF-IDF スコアの次元を XNUMX 次元空間に減らします。 下部には、赤で色付けされるトピックを選択できるスライダーがあります。 トピックが XNUMX つの異なるクラスターにグループ化されていることがわかります。XNUMX つは食べ物、鶏肉、場所などの一般的なテーマで、もう XNUMX つは最悪のサービス、汚い、場所、寒さなどのさまざまな否定的な側面です。
次のグラフは、レビューとトピックの関係を示しています。 特に、レビューが特定のトピックに割り当てられ、見つかった最も関連性の高い単語と一致している理由を理解することは有用です。 たとえば、最悪のサービスに関するいくつかの単語を含むトピック 2 に対応する赤いクラスターに焦点を当てることができます。 この密集したエリア内のドキュメントは、「ひどい顧客サービスとさらに悪い食べ物」のように、かなり否定的に見えます。
一見すると、これらのアプローチには多くの共通点があります。たとえば、トピックの数を自動的に見つけること、ほとんどの場合前処理が不要であること、UMAP を適用してドキュメントの埋め込みの次元を削減すること、そして HDBSCAN を次の目的で使用することなどです。これらの削減されたドキュメント埋め込みをモデル化しますが、トピックをドキュメントに割り当てる方法を見ると、それらは根本的に異なります。
Top2Vec は、クラスターの重心の近くにある単語を見つけることによって、トピック表現を作成します。
Top2Vec とは異なり、BERTopic はクラスターの重心を考慮しませんが、クラスター内のすべてのドキュメントを一意のドキュメントと見なし、TF-IDF のクラスベースのバリエーションを使用してトピック表現を抽出します。
トップ2Vec | BERトピック |
クラスターの重心に基づいてトピックを抽出する戦略。 | c-TF-IDF に基づいてトピックを抽出する戦略。 |
動的トピック モデリングはサポートされていません。 | 動的トピック モデリングをサポートしています。 |
各トピックのワード クラウドを構築し、トピック、ドキュメント、単語の検索ツールを提供します。 | 抽出されたトピックの解釈を可能にするインタラクティブな視覚化プロットの構築が可能です。 |
トピック モデリングは、自然言語処理の成長分野であり、レビュー、オーディオ、ソーシャル メディアの投稿など、多数の可能なアプリケーションがあります。 前述のとおり、この記事では、Topi2Vec と BERTopic の概要を説明します。これらは、数行のコードでトピックを識別し、データの視覚化を通じて結果を解釈するのに役立つ XNUMX つの有望なアプローチです。 これらの手法について質問がある場合、またはトピックを検出するための他のアプローチについて他の提案がある場合は、コメントに記入してください。
ユージニア・アネロ 現在、イタリアのパドバ大学の情報工学科の研究員です。 彼女の研究プロジェクトは、異常検出と組み合わせた継続的学習に焦点を当てています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://www.kdnuggets.com/2023/01/topic-modeling-approaches-top2vec-bertopic.html?utm_source=rss&utm_medium=rss&utm_campaign=topic-modeling-approaches-top2vec-vs-bertopic
- 1
- 10
- 100
- 7
- a
- できる
- 私たちについて
- Ad
- 住所
- 後
- アルゴリズム
- アルゴリズム
- 整列した
- すべて
- 配分
- 許可
- ことができます
- 金額
- 分析
- 分析します
- &
- 異常検出
- 別の
- 申し込み
- 適用された
- アプローチ
- アプローチ
- AREA
- エリア
- 引数
- 記事
- 側面
- 割り当てられた
- オーディオ
- 自動的に
- 利用できます
- 悪い
- バー
- ベース
- なぜなら
- の間に
- ボトム
- あさごはん
- 建物
- 構築します
- 計算
- 呼ばれます
- できる
- キャプチャー
- 例
- チェーン
- 特性
- チャート
- 選ばれた
- 市町村
- クラシック
- 閉じる
- クローザー
- クラスタ
- クラスタリング
- コード
- コーヒー
- 組み合わせた
- 注釈
- コマンドと
- 不満
- 見なさ
- 考えると
- 含まれています
- コンテキスト
- 従来の
- 対応する
- 対応する
- 作ります
- 作成した
- 作成します。
- 作成
- 創造
- カップ
- 現在
- 顧客
- 顧客サービス
- データ
- 中
- 取引
- 実証
- 部門
- 検出
- 決定する
- 異なります
- 距離
- 遠い
- ディヴァージュ
- ドキュメント
- ドキュメント
- そうではありません
- 欠点
- ドライブ
- ドライブスルー
- ダイナミック
- 各
- 簡単に
- 他の場所で
- 埋め込まれた
- エンジニアリング
- さらに
- 例
- 除く
- 説明
- エキス
- 抽出物
- 非常に
- スピーディー
- 仲間
- 少数の
- フィールド
- もう完成させ、ワークスペースに掲示しましたか?
- 発見
- 名
- フォーカス
- 焦点を当て
- フード
- 発見
- から
- 根本的に
- 生成する
- 生成された
- 取得する
- グローバル
- Go
- 行く
- グラフ
- グラフ
- 成長
- 助けます
- 階層
- ハイ
- より高い
- 最高
- HTTPS
- アイデア
- 識別
- 識別子
- 識別する
- 識別
- import
- 重要
- 改善します
- in
- 情報
- を取得する必要がある者
- 相互作用的
- 興味深い
- 解釈
- IT
- Italy
- KDナゲット
- 保管
- 知っている
- ラベル
- 言語
- 大
- 学習
- レバレッジ
- LINE
- ライン
- リスト
- ローカル
- 位置して
- 場所
- 場所
- 見て
- 探して
- メイン
- 多くの
- 地図
- マトリックス
- マクドナルド
- 意味のある
- メディア
- モデリング
- モデリング
- モデル
- 他には?
- 最も
- 多国籍
- 名
- ナチュラル
- 自然言語
- 自然言語処理
- 必要
- 負
- 次の
- ノイズ
- 数
- 多数の
- 観察する
- 得
- ONE
- 注文
- 組織
- オリジナル
- その他
- パンダ
- パラメーター
- 部
- 特定の
- 割合
- 実行する
- フレーズ
- 場所
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- ポイント
- 可能
- 投稿
- 強力な
- 現在
- 前
- 前に
- 処理
- 生産された
- 製品
- プロジェクト
- 有望
- 提供
- は、大阪で
- 品質
- 質問
- 理由
- レッド
- 減らします
- 電話代などの費用を削減
- 縮小
- に対する
- 関係
- の関係
- 関連した
- 繰り返す
- 表現
- 代表者
- 表し
- 研究
- 結果
- 明らかにする
- レビュー
- レビュー
- 同じ
- を検索
- 検索
- 選択
- サービス
- すべき
- 表示する
- 示す
- 視力
- 同様の
- 同様に
- から
- スライダー
- 遅く
- So
- 社会
- ソーシャルメディア
- ソーシャルメディアの投稿
- 一部
- スペース
- 専門の
- 特定の
- split
- 手順
- ステップ
- 戦略
- 構造
- そのような
- 提案する
- 教師あり学習
- サポート
- サポート
- テーブル
- 取る
- 取り
- テクニック
- 10
- 条件
- そこ。
- 三
- 介して
- 時間
- 〜へ
- トークン化された
- 豊富なツール群
- top
- トップテン
- トピック
- トピック
- トランスフォーマー
- チュートリアル
- 典型的な
- 根本的な
- わかる
- ユニーク
- 大学
- USA
- つかいます
- 貴重な
- 価値観
- バリアント
- 可視化
- wait
- which
- while
- 一方で
- 意志
- 以内
- Word
- 言葉
- 最悪
- 書きます
- 間違った
- ゼファーネット