NLP30/2024の発表論文「LDA を使った専門用語の教師なしクラスタリング」の元になった解析データと解析スクリプト
- LDA に加えて(Partially) Labeled LDA TomotoPy を実装し,分類性能の向上を実現した.
- 高速化のためのCython モジュール (gen_ngram_cy.py) はApple Silicons ではPython 3.11 以上では走らない模様. Intel chip を使う機会では走る.
- gen_ngrams.py を書き直した gen2_ngrams.py を使い,gen_extended_skippy_ngrams(..) を gen_skippy_ngrams(..., extended = True, ...)で代用できるようにした.
Excel 作業本
- 仏教用語集 (.xslx データ)
- 料理用語集 (.xslx データ)
- 政治経済用語集 (.xslx データ)
- 法律用語集 (.xslx データ)
- 法律用語集 (.xslx データ)
- 医療縮約表現集 (.xslx データ)
- 医学用語集 (.xslx データ)
- 医学用語集 (.xslx データ)
- 哲学用語集 (.xslx データ)
- 出版用語集 (.xslx データ)
Jupyter Notebook
- 分野混合用語データの別解析用の Jupyter notebook (FastText の処理を追加済み)
- 論文の解析結果の再現用の Jupyter notebook (FastText の処理は未追加)
Python 3.9, 3.10, and 3.11 (Anaconda 3上) での作動を確認済み
重要な実行パラメター:
0a use_LDA_for_encoding: (Labeled) LDA をエンコーディングで(FastText と併用して)実行するかどうか 0b use_LDA_for_encoding: (Labeled) LDA をエンコーディングで(FastText と併用して)実行するかどうか 0c use_FastText_for_encoding: FastText を((Labeled) LDA と併用して)エンコーディングで実行するかどうか 0d use_UMAP [boolean]: t-SNE の代わりに UMAP を使うかどうか
- max_doc_length [integer]: 語 (= doc) の最大文字数
- max_n_for_ngram [integer]: n-gram の nの最大値
- ngram_is_inclusive [boolean]: LDA 用のterm に使う n-gram を包括的にするかどうか
- skippy_means_extended [boolean]: skippy n-gram が extended かどうか
- max_gap_rate [float]: max_doc_size のどれぐらいを 不連続 n-gram の連結距離とするか
- n_topics [integer]: LDAの topic数
- term_min_freq [integer]: 有効 term 最低頻度 (gensim のminfreq に渡す値)
- term_abuse_rate [float: 0~1.0]: 頻出 term の濾過指数 (gensim のabuse_therehold に渡す値); Labeled LDA では無効
他のパラメターを変更するのはお勧めできない.やっても良いが,自分でコードが読めない場合には,対処不能になる可能性大.
2 の使い方:
まず 1 を実行し,saves/ に新たに保存された .p ファイルを 2 で読み込む.
実行に必要な Python packages
- pyLDAvis [最初に導入すると良い. gensim を道入してくれる]
- WordCloud
- plotly
- adjustText
実行結果の .html ファイル