日本語文書トピックモデリング・固有表現抽出 Colab プログラム

【概要】本システムは、日本語小説のテキストファイルを分析し、主要なテーマと登場人物・地名を自動抽出するプログラムである。BERTopic、c-TF-IDF、spaCyの3つのAI技術を統合し、トピックモデリングと固有表現抽出を実現する。

【概要説明】 [PDF][パワーポイント]

Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1EbjqpewsIEXVYgOEO_NqhAvMHhaOo3dD?usp=sharing

システム概要図 トピックモデリング結果例 固有表現抽出結果例 c-TF-IDF分析結果 可視化グラフ例

【目次】

  1. プログラム利用ガイド
  2. プログラムの説明
  3. 実装技術の概要
  4. 実験・研究スキルの基礎

プログラム利用ガイド

1. このプログラムの利用シーン

日本語小説のテキストファイルを分析し、主要なテーマと登場人物・地名を自動抽出するプログラムである。小説の内容を客観的に把握したい場合や、複数の作品を比較分析したい場合に利用できる。

2. 主な機能

3. 基本的な使い方

  1. Colabのページを開く
  2. Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1EbjqpewsIEXVYgOEO_NqhAvMHhaOo3dD?usp=sharing

  3. 「テキストファイルをアップロードしてください」と表示されたら、分析対象のテキストファイルを選択する
  4. 自動的に分析が実行され、結果が表示される

4. 便利な機能

プログラムの説明

概要

このシステムは、日本語小説のテキストを分析するプログラムである。BERTopic、c-TF-IDF、spaCyの3つのAI技術を統合し、テキストの主題抽出と固有表現(人名・地名等)の抽出を行う。

主要技術

BERTopic(トピックモデリング)

BERTopicは、BERT埋め込みとc-TF-IDFを組み合わせたトピックモデリング手法である[1][2]。文章を数値ベクトルに変換し、クラスタリングによってテーマを自動抽出する。以下の5段階で処理を行う。

c-TF-IDF(クラスベースTF-IDF)

c-TF-IDFは、BERTopicの内部で使用される重み付けアルゴリズムである[1][2]。従来のTF-IDFを拡張し、クラス(トピック)単位で単語の重要度を計算する。各トピック内の全文書を1つの文書として扱い、トピックを特徴づける単語を抽出する。

計算式:

$$c\text{-}TF\text{-}IDF(x,c) = tf(x,c) \times \log(1 + A/freq(x))$$

技術的特徴

実装の特色

参考文献

[1] Grootendorst, M. (2022). BERTopic: Neural topic modeling with a class-based TF-IDF procedure. arXiv preprint arXiv:2203.05794. https://arxiv.org/abs/2203.05794

[2] BERTopic公式ドキュメント. https://maartengr.github.io/BERTopic/

[3] BERTopic GitHub Repository. https://github.com/MaartenGr/BERTopic

[4] Explosion AI. (2024). spaCy - Industrial-strength Natural Language Processing. https://spacy.io/

[5] spaCy ja_core_news_lg モデル. https://spacy.io/models/ja

[6] Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing. https://arxiv.org/abs/1908.10084

[7] Hugging Face. sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2. https://huggingface.co/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

実装技術の概要

本システムは3つのAI技術を組み合わせた日本語小説分析システムである。

  1. c-TF-IDF:クラスベースのTF-IDF(BERTopicの重み付けアルゴリズム)
  2. BERTopic:トピックモデリング(テーマ抽出)
  3. spaCy ja_core_news_lg:固有表現抽出(人名・地名等の抽出)

1. c-TF-IDF(BERTopicで使用)

公式情報

2. BERTopic(トピックモデリング)

公式情報

3. spaCy ja_core_news_lg(固有表現抽出)

モデル概要

spaCy公式の日本語大規模モデルである。統計的機械学習ベースのNERモデルで、Universal Dependencies Japanese GSD コーパスで学習されている。

抽出可能な固有表現

公式情報

実験・研究スキルの基礎:Google Colabで学ぶ日本語小説分析実験

1. 実験・研究のスキル構成要素

実験や研究を行うには、以下の5つの構成要素を理解する必要がある。

1.1 実験用データ

このプログラムでは日本語小説のテキストファイルが実験用データである。テキストファイルは文章数が50以上あることが望ましい。文章数が少なすぎると、トピック分析の精度が低下する。

1.2 実験計画

何を明らかにするために実験を行うのかを定める。

計画例:

1.3 プログラム

実験を実施するためのツールである。このプログラムはBERTopic、c-TF-IDF、spaCy ja_core_news_lgの3つの技術を使用している。

1.4 プログラムの機能

このプログラムは4つのパラメータで分析を制御する。

入力パラメータ:

出力情報:

パラメータの影響:

1.5 検証(結果の確認と考察)

プログラムの実行結果を観察し、パラメータの影響を考察する。

基本認識:

観察のポイント:

2. 間違いの原因と対処方法

2.1 プログラムのミス(人為的エラー)

プログラムがエラーで停止する

ファイルのアップロードができない

モデルのダウンロードに時間がかかる

メモリ不足のエラーが発生する

2.2 期待と異なる結果が出る場合

トピック数が1つしか生成されない

外れ値の割合が30-40%程度になる

外れ値の割合が50%を超える

トピックの代表単語が意味不明である

固有表現が全く抽出されない

同じトピックが複数生成される

3. 実験レポートのサンプル

実験例1:トピック数とパラメータの関係調査

実験目的:

同一の日本語小説テキストに対して、HDBSCAN_MIN_CLUSTER_SIZE_RATIOの値を変化させることで、トピック数と外れ値の割合がどのように変化するかを調査する。

実験計画:

UMAP_N_NEIGHBORSを15に固定し、HDBSCAN_MIN_CLUSTER_SIZE_RATIOを15、20、25、30の4段階で変化させて結果を比較する。

実験方法:

プログラムのパラメータ設定セクションでHDBSCAN_MIN_CLUSTER_SIZE_RATIOの値を変更し、各設定で以下の項目を記録する。

実験結果:

RATIO値 トピック数 外れ値割合 平均文章数 代表単語の妥当性
15 x x% x文 x
20 x x% x文 x
25 x x% x文 x
30 x x% x文 x

考察:

結論:

(例文)本実験のテキスト(文章数xx)においては、HDBSCAN_MIN_CLUSTER_SIZE_RATIO=xxが最もバランスの取れた設定であった。トピック数はxx個生成され、各トピックは小説の異なる場面や主題を適切に反映していた。細かいテーマの違いを捉えたい場合はxx、大まかなテーマ分類で十分な場合はxx-xxが適切である。文章数に応じてパラメータを調整する必要性が確認できた。

実験例2:固有表現抽出の精度検証

実験目的:

spaCy ja_core_news_lgモデルによる固有表現抽出の精度を検証し、どのタイプの固有表現が正確に抽出され、どのタイプで誤抽出や見逃しが発生するかを調査する。

実験計画:

プログラムの固有表現抽出結果を目視で確認し、正しく抽出された固有表現と誤って抽出された固有表現を分類する。特に人名(PERSON)と地名(GPE)に注目して精度を評価する。

実験方法:

プログラムを実行して固有表現抽出結果を取得し、以下の手順で検証する。

実験結果:

固有表現タイプ 抽出数 正解数 誤抽出数 精度
PERSON(人名) xx件 xx件 xx件 xx%
GPE(地名等) xx件 xx件 xx件 xx%
DATE(日付) xx件 xx件 xx件 xx%
QUANTITY(数量) xx件 xx件 xx件 xx%

具体的な抽出例の検証:

抽出された表現 判定タイプ 正誤 備考
PERSON 人名として正しく抽出
勘太郎 PERSON 人名として正しく抽出
西洋 LOC 抽象的な地理概念
三年間 DATE 期間表現として正しく抽出
二階 FAC × 一般名詞を誤抽出

考察:

結論:

(例文)spaCy ja_core_news_lgモデルは、人名と地名の抽出において実用的な精度を示した。特に現代的な固有名詞や一般的な地名については高い精度で抽出できた。一方で、古典文学特有の表現、ルビ付き表記、一般名詞との境界が曖昧な語については誤抽出や見逃しが発生した。固有表現抽出の結果を利用する際は、頻出表現を目視で確認し、明らかな誤抽出を除外する後処理が必要である。また、文学作品の分析では、作品の時代背景に応じてモデルの精度が変動することを考慮すべきである。