LDAトピックモデルで文書集合をクラスタリングしてみた．

# 概要
###トピックモデルとは
文書集合をいい感じにトピック（話題）に分類してくれるモデルのこと
![image5-min.png](https://qiita-image-store.s3.amazonaws.com/0/377231/5925934b-45fb-eba6-cf9a-f62daed24d62.png)
引用：http://qiita.com/GushiSnow/items/8156d440540b0a11dfe6

代表的なものとして**LDA**
(Latent Dirichlet Allocation)
(潜在的ディリクレ配分法)
がある

LDA は***1つの文書が複数のトピックから成ることを仮定した言語モデル***の一種

つまり，とある文書をモデルに適応した時に，
その文書に対して，「これは**政治**だ！」とスパって断言するんじゃなくて，
「70%は政治で20%はスポーツで10%は景気に関するトピックだ！！」みたいな

ちなみに，各トピックのタイトルは自動で付与されるわけじゃなくて基本的には人目で判断する

各トピックごとに***そのトピックにふさわしいと思われる単語の確率分布***が与えられるからそれで無理やり自動的にトピックのタイトルを生成することは可能

また，トピック数Nは事前に指定しておく必要がある

教師ラベルのいらないこのトピックモデルは**教師なし学習**に分類される

モデルの生成過程は[ここを参考に](https://abicky.net/2013/03/12/230747/)


###今回の内容
クエリ（今回は「***就活***」）に関するウェブページ文書集合をトピックモデルに適用し

トピックごとに文書を分類させる


#準備
・クエリ「就活」を入力に，検索エンジン・サジェストを収集
・「就活 AND [集めたサジェスト集合]」で検索をかけた結果のウェブページ文書集合生成
・HTMLからの本文抽出には[***ExtractContent***](https://orangain.hatenablog.com/entry/content-extraction-from-html-in-python)モジュールを利用
・文書集合をMecabで形態素解析（分かち書き）したものを***mecabed.csv***（入力ファイル）とする
以上は全自動化させてあります

```:mecabed.csv（例：1122-1126行目）
1321,https://daikore.com/post-853/,就活 きれいめ 私服, 説明会 面接 私服 指定 する 企業 私服 学生 惑わす 私服 良い スーツ 無難 就活 私服 今回 就活 私服 >      解説 スポンサー リンク 基本 なる 私服 考え方 新卒 就活 私服 是非 4点 基本 服装 自由 私服 表記 面接 私服 指定 オフィス カジュアル アパレル 広告 関係 一部
       企業 普段着 少数派 1つ 解説 服装 自由 私服 表記 就活 いる 服装 自由 私服 2つ 表記 原則 服装 自由 スーツ 私服 オフィス カジュアル 後述 認識 間違い 服装       自由 説明会 表記 自由 スーツ 禁止 いる 禁止 余計 こと 良い スーツ ハズレ 私服 面接 グループディスカッション 選考 表記 就活 私服 スーツ 以外 ここ スーツ       行く 場違い オフィス カジュアル 後述 意識 私服 オフィス カジュアル 毎年 私服 指定 とき Tシャツ ジーパン 現れる 学生 大半 企業 良い 私服 良い 私服 スーツ
       以外 面接 相応しい 格好 オフィス カジュアル 後半 解説 ジャケット カーディガン シャツ キレイ 格好 意識 一部 企業 普段着 アパレル 業界 広告業界 コンサル>      ティング 業界 一般 業界 違う 選考 行う 企業 場合 私服 意味合い 変わる こと スーツ 禁止 オフィス カジュアル 不可 あなた 表現 できる 格好 ここ 徹底 表記 >      服装 指定 する 企業 存在 企業 文字通り 普段着 自分 大好き 洋服 行く 上着 部活 ユニフォーム 学生 あなた 表現 できる 格好 スーツ 学生 存在 少数派 私服 指>      定 内容 選考 会場 私服 少数派 スーツ 少数派 する こと 大切 学生 自分 唯一 私服 こと 企業 私服 指定 あなた 文面 自分 私服 問題 日本人 若い人 少数派 いる       途端 萎縮 ジーパン サンダル オフィス カジュアル スーツ 大差 それ れる こと 絶対 ない 私服 面接 具体 服装 男子 男子 オフィス カジュアル 簡単 テーラードジ
      ャケット シャツ カーディガン チノパン キレイ 格好 意識 いくつか 具体 解説 基本 テーラードジャケット テーラードジャケット シャツ オフィス カジュアル 原則
       どこ 選考 参加 絶対 文句 鉄板 格好 鉄板 10人 5人 格好 他人
1322,https://shu-cream.jp/looks008/,就活 きれいめ 私服, 就活 スーツ 説明会 選考 私服 OK 服装 自由 私服 最近 私服 参加 推奨 する 企業 私服 れる 余計 いい
       スーツ 来る いる しまう 就活 私服 参加 私服 OK 通り 服装 評価 しまう 今回 就活 私服 参加 注意 オススメコーデ 紹介 企業 私服 OK 意図 リクルートスーツ 就
      活 マナー 一般 いる 企業 私服 勧める 目的 知る こと 着る 私服 OK 企業 いる ポイント 服装 私服 OK 服装 いい わけ 複数 参加 する 説明会 なのか 個別 面接 T      PO 服装 られる こと いる 可能性 以下 ポイント 服装 する ポイント 言える 社風 人材 私服 選ぶ 自社 雰囲気 人材 チェック いる こと リクルートスーツ 就活生       全員 雰囲気 私服 もらう こと スーツ 個性 私服 とき 近い 雰囲気 自社 社風 社員 雰囲気 合う いる 自社 雰囲気 体感 ほしい いる ポイント ベンチャー企業 スー
      ツ カジュアル 格好 働く 社員 多い 企業 選考 就活生 自社 働く イメージ 私服 指定 する こと それ 私服 働く 社員 さん いる 場合 企業 働く 服装 お手本 コー>      ディネート 考える 良い いる ポイント 私服 合う イメージ カジュアル すぎ NG 就活 私服 NG ポイント 私服 いい 私服 もの アイテム ポイント 紹介 アイテム 注>      意 スカート スカート 場合 一番 チェックポイント よう 注意 理想 以上 スカート 素足 ストッキング タイツ 履く よう パンツ ズボン NG もの デニム 作業着 印象
       カジュアル すぎる 判断 れる 可能性 ある 良い カーゴパンツ ミリタリー パンツ アウトドア っぽい もの NG ジャージ スウェット 論外 パンツ スカート 同様 注>      意 ホットパンツ すぎる ショートパンツ シャツ カットソー ブラウス ワイシャツ NG もの いる フォーマル 印象 なる ポロシャツ オススメ カットソー 露出 具合 >      襟ぐり いる もの 背中 いる もの 極端 短い もの やり場 困る 絶対 NG サンダル ビーチサンダル もってのほか ヒール かかと サンダル カジュアル すぎる 露出 場
      所 パンプス ローファー スニーカー カジュアル 企業 雰囲気 OK 判断 にくい 場合 多い 無難 パンプス ローファー オススメ ジャケット 上着 カットソー 着る 上着
       シンプル ジャケット オススメ いい ウィンドブレーカー パーカー スポーツ アウトドア 想起 せる もの 自宅 見え がち もの ジャケット デニム ここ 良い ニット
       トレーナー 寒い 私服 着る ニット トレーナー セーター ニット カーディガン 問題 ありません トレーナー 過度 カジュアル なる ワンピース ワンピース オフィス
       カジュアル 定番 就活 OK カットソー 同様 背中 いる もの 胸元 見える もの NG ポイント 注意 無地 ストライプ ボーダー シンプル もの オススメ 迷彩 アニマル>      柄 見える もの 小花柄 千鳥格子 ドット 生地 やすい もの OK 大ぶり 花柄 英単語 もの オススメ 私服 自由度 ネイビー ブラウン カーキ 就活 私服 相性 良い NG >      ショッキング ピンク 蛍光 オレンジ 賑やか 子供っぽい 印象 選ぶ とき グレー ピンク 以内 押さえる バランス コーディネート 不安 ある 押さえる 失敗 生地 アイ
      テム 紹介 通り デニム 作業着 イメージ ある スウェット ウィンドブレーカー よう 生地 オススメ ニット 問題 ありません 派手 シルク 毛皮 よう 高級感 醸し出す
       もの よい 私服 シワ チェック シワ はだら しない 印象 就活 私服 オススメコーデ 最後 これ ポイント 考慮 コーディネート 見本 紹介 自分 コーデ ネイビー ジ>      ャケット 王道 スタイル ジャケット 羽織る オフィス カジュアル コーデ 仕事 できる シンプル カットソー グレー パンツ ネイビー ジャケット 同色 パンプス 一番
       無難 鉄板 スタイル 企業 シーン ガウチョパンツ スタイル カジュアル 見え ちな ガウチョ きれいな 生地 もの 就活 私服 カジュアル 押さえる ため 付き シャツ       きれい 見える 生地 色味 ガウチョ 出す バランス コーデ ニット 同系 まとめる 網目 大きめ ニット 同系 まとめる なじみ ナチュラル 雰囲気 今回 紹介 する ベー
      ジュ その他 ブラウン まとめる こと 馴染み いい コーデ ニット 印象 サイズ 注意 王道 スカート プラス カットソー ロングスカート 女性 スタイル スカート いる
       もの ライン 作る こと 女性 柔らか ライン 付ける スカート 全体 色味 ネイビー 水色 グレー よう 女らしさ 鉄板 ワンピース 最後 紹介 する 女子 ワンピース 一
      番 オススメ 今回 コーデ 同様 シャツ ワンピース いる もの 見える 可能 ある ワンピース シャツ 言う 絞る こと 印象 いかが 自分 スタイル 不安 いる 社会人 意
      見 もらう 良い 私服 個性 アピール 自分 一社
1323,https://www.aoki-style.com/static/recruit/magazine/pc/style/s_05/,就活 きれいめ 私服, コーディネイト 違い 学ぶ 業界 着こなし 対策 就活 スタイル AOK      I 就活 magazine AOKI リクルートスーツ 就活 スーツ フェア スーツ AOKI 公式 通販
1324,https://job.j-sen.jp/jobshil/54,就活 きれいめ 私服, 私服 面接 スーツ コーディネート 選択 いい つける こと 多い 私服 面接 ポイント 服装 今回 基本 服
      装 つける アイテム 解説 面接 私服 お越 私服 指定 する 企業 私服 指定 する 理由 TPO 判断 つく いる 一般常識 ある ビジネス 服装 できる 確認 いる 社風 いる
       いる 周囲 協調性 そう 判断 自由 社風 アピール いる IT 業界 マスコミ 業界 外資系 企業 多い リラックス 面接 ほしい 企業 配慮 ある 攻略 POINT 服装 雰囲気       会社 イメージ ふさわしい 判断 ホームページ チェック する ひとつ オフィス シーン 見る こと できる 場合 先輩 社員 方々 服装 いる 参考 そう 任意 場合 強制       場合 私服 指定 スーツ 私服 選べる 場合 私服 ほう いい 場合 ドレスコード 記載 企業 要求 異なる 服装 服装 判断 リスト 私服 rarr 私服 あな たらしい 服装 ra      rr 私服 カジュアル 服装 rarr 私服 私服 rarr スーツ 服装 自由 rarr スーツ 私服 定義 面接 れる 私服 ビジネスカジュアル では ビジネスカジュアル なん 細かい
       定義 業種 職種 社風 言う ビジネスマナー 格好 ldquo 取引先 目上 rdquo 服装 こと シミ シワ 清潔感 ある ラフ ない 格好 いう やすい 私服 普段着 注意 写真 >      解説 転職 服装 対策 徹底 ガイド OK パターン NG パターン 参考 画像 紹介 男性 バッグ A4サイズ 入る 自立 もの ベスト
1325,https://www.nikki.ne.jp/magazine/entry/2017/09/1401,就活 きれいめ 私服, 私服 お越 就活 いる 文言 する こと 普段 リクルートスーツ 就活 いる 学生 私>      服 悩み タネ ここ 就活 シーン 正しい 私服 解説 服装 指定 3つ ケース 出典 pixabay 就活 私服 関係 する パターン 以下 通り よう 対応 する パターン 私服 普>      段着 パターン 場合 スーツ 参加 する 学生 多数派 私服 リラックス できる 私服 OK 周り 浮く 不安 リクルートスーツ 着用 参加 する 無難 普段着 私服 お越し よ
      う 書き方 場合 普段着 指定 する こと 企業 何かしら 意図 ある 場合 指定 通り 普段着 着用 普段着 いい わけ 説明 する ビジネスカジュアル オフィス カジュア>      ル 基準 服装 指定 自分 服装 etc. アパレル 業界 多い パターン 場合 リクルートスーツ 参加 する 絶対 NG 企業 セレクト センス 興味 評価 理由 コーディネート       テーマ 説明 できる よう おく こと 大切 服装 リンク こちら 服装 自由 とき クチコミ 掲示板 みん就 みんなの就職活動日記 企業 私服 見る 就活 私服 指示 ある       場合 企業 カジュアル 雰囲気 就活生 就活生 私服 センス さまざま こと 意図 暑い 季節 就職活動 する 学生 スーツ 着用 良い 企業 広義 スーツ 私服 私服 指定 >      無難 スーツ 考える いる 私服 指示 場合 リクルートスーツ 以外 服装 いる 思う 自然 指示 無視 よう 服装 理由 ある 人物 しまう 可能性 ない 私服 指示 スーツ       以外 私服 着用 アレ 周り 違う OK 私服 指示 場合 会場 みる 参加者 服装 私服 スーツ どちら いる こと よう 場合 大切 自分 少数派 自分 パニック こと 周り 違
      う こと それ こと いる 気持ち 萎縮 やすい もの 少数派 企業 指定 服装 いる こと ない 不安 思う こと なに 周り 違う 服装 選考 本来 出す こと もったいない       こと 短パン サンダル よう 常識 格好 限り 服装 少数派 こと 印象 なる こと 周り 違う 服装 私服 行く 説明 リンク こちら 私服 いく 説明 クチコミ 掲示板 みん
      就 みんなの就職活動日記 男性 ビジネスカジュアル トータル グレー ベージュ 基調 トップス つき シャツ ベーシック ストライプ 華美 入り ピンク ペールブルー >      淡色 清潔 印象 もの ベスト ネルシャツ ビジネスカジュアル ジャケット コットン ポリエステル 素材 ある テーラードジャケット 基本 テーラード シングル ２つ >      ボタン タイプ スタンダード ボタン 着こなし いる 印象 与える ため 一番 ボタン よう する いい 夏場 ジャケット 着用 パンツ テーパードパンツ チノパン ジャケ
      ット 異なる カラー 合わせる こと スーツ 軽減 革靴 基本 つま先 自由 いる つぶし 汚れ ない 手入れ いる かよく 確認 カバン A4サイズ 入る カバン 便利 自立 >      もの 髪型 眉毛 襟足 程度 長さ ベスト 染髪 いる 場合 ナチュラル 戻す 無難 匂い 強い 整髪料 NG 清潔感 重要 女性 ビジネスカジュアル トータル グレー パステ>      ルカラー バランス 柔らかい 印象 トップス 付き シャツ コットン ポリエステル ジャケット 気候 カーディガン 大丈夫 ジャケット 印象 ボトムス クロップドパンツ
       ストレート パンツ スカート タイトスカート フレアースカート ライン シルエット きれい もの おすすめ つま先 シンプル パンプス 基本 ヒール cm 程度 ノー ヒ>      ール 歩く 足音 出る タイプ もの 面接官 障る こと ある カバン A4サイズ 入る 生地 自立 カバン アクセサリー アクセサリー 全て 腕時計 着用 する よう 髪型 前
      髪 眉毛 見える よう 揃える ヘアピン 長い 1つ 束ねる ハーフ アップ 服装 ダメ ゼッタイ 就活 シーン ビジネス 男女 ジーンズ Tシャツ ラフ すぎる 服装 NG ビジ
      ネスカジュアル 条件 アイテム 崩れ シワ 服も 印象 悪い 注意 女性 場合 ミニスカート キャミソール 露出 高い アイテム 不可 ヒール すぎる ミュール 避ける ア>      イテム アイテム ベーシック もの 着崩 奇抜 着こなし する ダメ 清潔感 大切 常識 範囲 好み 個性 反映 TPO 自分 装い いかが 私服 指定 普段使い ビジネス 臨む       非常識 服装 指定 意図 自分 清潔感 ある 服装 関連リンク 私服 面接 クチコミ 掲示板 みん就 みんなの就職活動日記

```
1文書=1行となるようデータ整形済

カンマ区切りのCSVファイルで左からそれぞれ

|文書ID|URL|収集に使った検索エンジン・サジェスト|文書の本文（Mecab済）|
|---|---|---|---|
となっている

尚，Mecabは「**名詞**」および「**動詞**」を対象とし，出現頻度**１**の単語も考慮するものとする


#実験
###各種仕様
|||
|---|---|
|クエリ・フォーカス|**就活**|
|サジェスト集合数|**923**|
|文書の数|**11,841**|
|パッケージ|**Gensim**|
|トピック数|**50**|

###LDA
モデル生成からモデルへの適用まで一括で行っている

```Python:LDA.py
# coding: utf-8
PURPLE  = '\033[35m'
RED     = '\033[31m'
CYAN    = '\033[36m'
GREEN   = '\033[92m'
BLUE    = '\033[94m'
ENDC    = '\033[0m'
import gensim
from gensim import corpora, models, similarities
from time import sleep

def find_max(topics_per_document):
    list_A = []
    list_B = []
    for q in topics_per_document:
        list_A.append(q[0])
        list_B.append(q[1])
    max_prob  = max(list_B)
    max_index = list_B.index(max_prob)
    max_topic = list_A[max_index]
    print(GREEN+str(max_topic)+','+str(max_prob)+ENDC)
    print('___________________________')
    return max_topic,max_prob


def make_dictionary(list3):
    print(GREEN+"辞書の作成を開始します。"+ENDC)
    dictionary = corpora.Dictionary(list3)
    #dictionary.filter_extremes(no_below=1, no_above=1) # 「頻度が１回のものは無視」というのを解除
    dictionary.save_as_text('dict_ittan.txt')
    dictionary = gensim.corpora.Dictionary.load_from_text('dict_ittan.txt')
    return dictionary

def make_corpus(dictionary,list3):
    print(GREEN+"コーパスの作成を開始します。"+ENDC)
    corpus = [dictionary.doc2bow(text) for text in list3]
    corpora.MmCorpus.serialize('cop.mm', corpus)
    corpus = gensim.corpora.TextCorpus('cop.mm')
    return corpus

def maketopic_lda(dictionary,topic_N,id_list,url_list,suggest_list):
    corpus2 = corpora.MmCorpus('cop.mm')
    lda = gensim.models.ldamodel.LdaModel(corpus=corpus2, num_topics=topic_N, id2word=dictionary)
    lda.save("lda.model")
    for i in range(topic_N):
        print('TOPIC:', i, '__', lda.print_topic(i))
    index = 0
    for topics_per_document in lda[corpus2]:
        print(topics_per_document)
        page_id = id_list[index]
        url     = url_list[index]
        suggest = suggest_list[index]
        max_topic,max_prob = find_max(topics_per_document)
        b.write(page_id+','+url+','+suggest+','+str(max_topic)+','+str(max_prob)+'\n')
        index += 1

N = int(input(GREEN+'How many topics do you want?\n-->'+ENDC))
a = open('mecabed.csv','r')
b = open('result_of_lda.csv','w')
b.write('page_id,url,suggest,topic,probability\n')
id_list = []
url_list = []
suggest_list = []
listB = []
cnt = 0
for i in a:
    if cnt >=1:
        LINE = i.rstrip().split(',')
        page_id = LINE[0]
        url     = LINE[1]
        suggest = LINE[2]
        content = LINE[3]
        CNT     = content.split(' ')
        listB.append(CNT)
        id_list.append(page_id)
        url_list.append(url)
        suggest_list.append(suggest)
    cnt += 1

dictionary = make_dictionary(listB)
make_corpus(dictionary,listB)
maketopic_lda(dictionary,N,id_list,url_list,suggest_list)
a.close()
b.close()    
```
###結果

```:コマンドライン（18000文書もあるのでとある1文書のみを表示）
[(15, 0.03808873), (22, 0.051328313), (30, 0.045798432), (49, 0.83599323)]
49,0.83599323
```
文書に対してトピックへの確率が紐づくかんじ

確率の一番高いトピックに文書を分類するようプログラムを組んである

この例では，この文書はトピック番号**49**に分類される

（文書IDプリントさせるの忘れた笑）

```:result_of_lda.csv（ここでは文書ID1-100まで表示）
page_id,url,suggest,topic,probability
1,https://twitter.com/hashtag/%E5%B0%B1%E6%B4%BB%E3%81%82%E3%82%8B%E3%81%82%E3%82%8B,就活 あるある,45,0.95332825
2,https://01intern.com/magazine/archives/18117,就活 あるある,46,0.37715515
3,http://majimaga.com/2017/04/26/5934,就活 あるある,13,0.38282818
4,https://www.news-postseven.com/archives/20150426_318478.html,就活 あるある,30,0.6089397
6,https://journal.rikunabi.com/p/break/26048.html,就活 あるある,10,0.52701735
7,https://www.recme.jp/media/201811041578,就活 あるある,46,0.26767966
8,https://www.amazon.co.jp/%E5%B0%B1%E6%B4%BB%E3%81%82%E3%82%8B%E3%81%82%E3%82%8B%E2%80%95%E5%86%85%E5%AE%9A%E3%81%99%E3%82%8B%E4%BA%BA%E3%81%97%E3%81%AA%E3%81%84%E4%BA%BA-%E6%AD%A6%E9%87%8E-%E5%85%89/dp/4391143429,就活 あるある,26,0.9607988
9,https://fresh-recruit.rakus.co.jp/comic02/,就活 あるある,13,0.8531681
10,https://syukatsu-pro.com/column/5637,就活 あるある,22,0.4065939
11,https://prtimes.jp/main/html/rd/p/000001263.000005794.html,就活 あるある,15,0.32300124
12,https://www.youtube.com/watch?v=7i2NTMrPqCg,就活 あるある,27,0.8826752
13,http://topics.smt.docomo.ne.jp/article/fnn/bizskills/fnn-00401158CX,就活 あるある,37,0.5099992
14,https://www.buzzfeed.com/jp/aimurakami/syukatsu-aru-aru-gambaro,就活 あるある,37,0.5099992
15,https://www.youtube.com/watch?v=t3PwNti6C6Q,就活 あるある,13,0.7894496
16,https://www.aoki-style.com/static/recruit/magazine/pc/life/l_05/,就活 あるある,15,0.751332
17,https://tabi-labo.com/219505/job-hunting-students,就活 あるある,46,0.6159547
18,https://paiza.jp/ts/4,就活 あるある,13,0.5469475
19,https://job.rikunabi.com/2019/company/r856300067/blog/detail/14/,就活 あるある,13,0.4374593
20,https://job.senken.co.jp/shinsotsu/articles/mensetsu-greeting,就活 あいさつ,17,0.77685595
21,https://job.mynavi.jp/conts/2020/is_manner/02/,就活 あいさつ,46,0.42779115
22,https://kenjasyukatsu.com/archives/1375,就活 あいさつ,17,0.8477518
23,https://paiza.hatenablog.com/entry/2015/03/30/2016%E5%B9%B4%E6%96%B0%E5%8D%92%E3%81%AE%E5%B0%B1%E6%B4%BB%E7%94%9F%E3%81%AB%E9%80%81%E3%82%8B%EF%BC%81%E5%AB%8C%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84%E5%B0%B1%E6%B4%BB%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92,就活 あいさつ,5,0.51753116
24,https://job.mynavi.jp/conts/2019/manner/vol05/02.html,就活 あいさつ,12,0.7950692
25,https://www.s-shiori.com/con2/archives/2011/06/post-45.html,就活 あいさつ,5,0.4585565
26,https://unistyleinc.com/columns/26,就活 あいさつ,46,0.28258854
27,https://www.sjc-net.co.jp/company/top.html,就活 あいさつ,36,0.42114136
28,http://www.sojo-u.ac.jp/course/student/jobsearch/bow.html,就活 あいさつ,12,0.25806022
29,https://shinsotsu.mynavi-agent.jp/knowhow/article/cover-letter.html,就活 あいさつ,41,0.7383963
30,http://gaku-jim.asahi-u.ac.jp/es/student/manner/greeting.html,就活 あいさつ,13,0.47841507
31,https://jobrass.com/magazine/manners/12331/,就活 あいさつ,17,0.83209723
32,http://www.atarimae.jp/forWorkers/manual/02/,就活 あいさつ,17,0.42767194
33,https://www.youtube.com/watch?v=QiiYX0A4Lk0,就活 あいさつ,37,0.5099992
34,http://www.atarimae.jp/forWorkers/manual/02/01.html,就活 あいさつ,17,0.60510296
35,https://gaishishukatsu.com/archives/33474,就活 あいさつ,5,0.52101064
36,https://www.weblio-inc.jp/jhg/job_hunting_guide/mail/mail_greetings/,就活 あいさつ,5,0.38546497
37,https://gakumado.mynavi.jp/style/articles/16807,就活 あいさつ,17,0.6701021
38,https://job.career-tasu.jp/2019/guide/more/manner/04.html,就活 あいさつ,17,0.4298345
39,https://kimisuka.com/contents/column/580,就活 あいさつ,17,0.9169156
40,https://my-best.com/2005,就活 あぷり,16,0.5003873
41,https://play.google.com/store/apps/details?id=jp.co.recruit.android.rikunabi.nineteen&hl=en_US,就活 あぷり,16,0.6416541
42,https://itunes.apple.com/jp/app/%E3%83%AF%E3%83%B3%E3%82%AD%E3%83%A3%E3%83%AA%E3%82%A2-%E5%B0%B1%E6%B4%BB%E5%AF%BE%E7%AD%96%E3%82%A2%E3%83%97%E3%83%AA/id971530839?mt=8,就活 あぷり,22,0.48934582
43,https://www.tochimaru-job.jp/company/,就活 あぷり,2,0.5709458
44,http://www.kucoop.jp/app/recruit.html,就活 あぷり,2,0.32382333
45,https://biz-note.jp/jobhunting-application/,就活 あぷり,10,0.66206616
46,https://job.career-tasu.jp/2019/csf_contents/app/,就活 あぷり,16,0.9607894
47,https://goworkship.com/magazine/shu-katsu-application/,就活 あぷり,16,0.36166102
48,https://job.career-tasu.jp/2020/camp/app/forum/,就活 あぷり,8,0.52298105
49,https://www.in-fra.jp/articles/648,就活 あぷり,26,0.2793349
50,https://www.recme.jp/app/,就活 あぷり,37,0.5099992
51,https://doda-student.jp/app/concierge.html,就活 あぷり,12,0.2781045
52,https://kumanichi-recon.com/,就活 あぷり,36,0.6545438
53,https://rocketstart.site/howto/966,就活 あぷり,26,0.5375714
54,http://best-times.jp/articles/-/7341,就活 あぷり,16,0.7054568
55,https://app-liv.jp/sns/socialnet/3350/,就活 あぷり,3,0.60454655
56,https://rocketstart.site/howto/812,就活 あぷり,26,0.545826
57,https://gaishishukatsu.com/archives/126568,就活 あぷり,27,0.56574184
58,https://applinote.com/ios/job/%E5%B0%B1%E6%B4%BB/,就活 あぷり,16,0.63770384
59,https://www.nikkei.com/article/DGXMZO34629880X20C18A8XXA000/,就活 あぷり,16,0.6898538
60,https://unistyleinc.com/techniques/797,就活 あなたらしい写真,10,0.28799435
61,https://jobrass.com/magazine/measure/17048/,就活 あなたらしい写真,46,0.33865005
62,https://www.rirekisyodo.com/papers/entrysheet-goodphotos.html,就活 あなたらしい写真,18,0.6901709
63,https://www.j-cast.com/kaisha/2015/09/07244420.html?p=all,就活 あなたらしい写真,46,0.7058759
64,https://www.s-shiori.com/con2/archives/2013/11/3-69.html,就活 あなたらしい写真,18,0.49675652
65,https://www.youtube.com/watch?v=xWymieXezGw,就活 あなたらしい写真,37,0.5099992
66,https://www.shukatsu-note.com/list-of-category/resume/post-44865/,就活 あなたらしい写真,10,0.43120036
67,http://shukatu-man.hatenablog.com/entry/openes8,就活 あなたらしい写真,10,0.27852017
68,https://www.excite.co.jp/news/article/Jcast_kaisha_244420/,就活 あなたらしい写真,46,0.38821658
69,https://open-es.com/media/help/photo.html,就活 あなたらしい写真,18,0.5060381
70,https://syukatsu-kaigi.jp/companies/120418/entry_sheets,就活 あなたらしい写真,18,0.32690722
71,http://blogs.rcc.jp/saiyou/entrysheet/entry-613.html,就活 あなたらしい写真,10,0.37998343
72,https://mitanorifusa.com/articles/others/77,就活 あなたらしい写真,30,0.39599615
73,http://www.nicovideo.jp/watch/sm33029912,就活 あなたらしい写真,37,0.5099992
74,https://syukatsu-kaigi.jp/companies/105722/entry_sheets,就活 あなたらしい写真,46,0.3320335
75,https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11130112221,就活 あなたらしい写真,36,0.33683386
76,https://oshiete.goo.ne.jp/qa/2770548.html,就活 あなたらしい写真,46,0.68528914
77,https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13117642038,就活 あなたらしい写真,46,0.52154785
78,http://www.jobshinano.com/e2123635.html,就活 あなたらしい写真,18,0.6142998
79,https://gaishishukatsu.com/archives/101638,就活 あなたらしい写真,18,0.44558448
80,https://tokyo-calendar.jp/article/9347,就活 あほくさ,26,0.59781975
81,https://www.ureru.co.jp/blog/archives/3609,就活 あほくさ,46,0.40054148
82,https://hachibeechan.hateblo.jp/entry/2015/03/03/%E8%87%AA%E6%AE%BA%E3%81%99%E3%82%8B%E3%81%BB%E3%81%A9%E8%BE%9B%E3%81%91%E3%82%8C%E3%81%B0%E5%B0%B1%E6%B4%BB%E3%81%AA%E3%82%93%E3%81%A6%E3%82%84%E3%82%81%E3%81%A1%E3%81%BE%E3%81%88%E3%81%BF%E3%81%9F,就活 あほくさ,36,0.5033677
83,https://gendai.ismedia.jp/articles/-/31782,就活 あほくさ,46,0.5674522
84,http://hosyukakumei.blog.fc2.com/blog-entry-4.html,就活 あほくさ,13,0.17245772
85,http://psgamenet.blog.jp/archives/18166346.html,就活 あほくさ,39,0.51830894
86,http://blog.esuteru.com/archives/20009816.html,就活 あほくさ,12,0.5348484
87,https://news.nicovideo.jp/watch/nw1236114,就活 あほくさ,24,0.3385864
88,https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10103946810,就活 あほくさ,46,0.64365613
89,https://news.careerconnection.jp/?p=8666,就活 あほくさ,40,0.99649966
90,https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14175220659,就活 あほくさ,46,0.32461473
91,https://matomedane.jp/page/9880,就活 あほくさ,40,0.90129346
92,https://www.youtube.com/watch?v=y2F-YX8glR8,就活 あほくさ,30,0.4691308
93,https://www.honmamon0916.com/2018/05/08/2320/,就活 あほくさ,11,0.466695
94,http://hamusoku.com/archives/9747926.html,就活 あほくさ,40,0.72791225
95,https://takope.net/rail,就活 あほくさ,36,0.61689925
96,https://careelink.net/archives/2687,就活 あほくさ,18,0.616103
97,http://kinchiki-it.hatenablog.jp/entry/how-to-make-resume,就活 あほくさ,16,0.45809177
98,https://www.mag2.com/p/news/242246,就活 あほくさ,48,0.39609495
99,http://yuto3246.officialblog.jp/archives/130732.html,就活 あほくさ,46,0.46183205
100,https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1320450263,就活 あがり症,46,0.44399536
```
左から

|文書ID|URL|収集に使った検索エンジン・サジェスト|トピック|トピックProbability|
|---|---|---|---|---|

#UIへ実装
<img width="1335" alt="スクリーンショット 2019-03-20 0.26.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/20587b19-0311-e5c0-58a2-417311b9f7dd.png">
横軸がトピック

縦軸はクエリ「**就活**」に有力だと思われるドメイン群

各ドメインのウェブページ群それぞれに紐づくトピックがオレンジ色で示される

<img width="1107" alt="スクリーンショット 2019-03-20 0.28.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/44df7a55-be1f-c3fc-29a3-93dfecd7baa5.png">
トピック（横軸）を拡大

トピックのタイトルは自動で生成させている

各トピックごと，文書に紐づいたサジェストの頻度を出す

その頻度上位３つのサジェストを「**・**」で繋げて生成

**文書の中身見て人手でタイトルつけるなら・・・**

|トピック番号|タイトル|
|---|---|
|0|髪型|
|1|やる気のでる曲|
|2|挫折とか経験関係|
|3|ご利益グッズ|
|4|服装自由ってどんなかんじ|
|5|作文と論文|
|6|SPI|
|7|応援グッズ|
|8|よくわからない|
|9|今年の就活はどんな就活か|
|10|学校推薦|
|11|健康診断関係|

といったところであろうか

自動でつけたタイトルのわりにはいいかんじだと思う

<img width="1012" alt="スクリーンショット 2019-03-20 0.28.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/1a7a05ca-f435-6530-2e28-c03b6fde03cb.png">

他にも

学歴

履歴書の書き方

浪人と留年

グループ面接

<img width="1036" alt="スクリーンショット 2019-03-20 0.29.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/0480e051-25e6-39ad-19c4-84c25b17609e.png">

証明写真

日程

短所と長所

などクエリ「**就活**」に関するトピックを閲覧できる仕様となっている

<img width="775" alt="minsyu.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/6080b3c2-18b8-0142-760f-147124fa3b07.png">

例えば「みん就」をクリックすると
![demo.gif](https://qiita-image-store.s3.amazonaws.com/0/377231/42fafc40-2ada-2bff-a385-9d9b81f55068.gif)
こんなかんじのインタフェースで「みん就」のウェブページを閲覧

トピックをクリックすると選択したトピック中の**さらに粒度の細かい話題**が提示される

ウェブページに紐付くサジェスト間の**COS類似度**を***word2vec***で測り

類似度が比較的近いもの同士（ウェブページ）を同じグループとしている


ちなみに

クエリ「**結婚**」で文書収集してLDAかけるとこんなかんじ

<img width="1341" alt="スクリーンショット 2019-03-21 13.55.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/cbb4c2b9-7667-9d80-04a1-6c486eb39551.png">

同様にクエリ「**虫歯**」
<img width="1346" alt="スクリーンショット 2019-03-21 13.55.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/3ba0bc75-24cf-ba4a-ca25-da7e83000fb1.png">

同様にクエリ「**花粉症**」
<img width="1363" alt="スクリーンショット 2019-03-21 13.56.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/377231/038a6352-be5e-8388-2fe0-e500c9e82bcf.png">

どれもタイトルはイマイチだけど

ウェブ文書集合がきちんとトピックに分類された

**尚，本UI(HTML)はPythonで動的に出力させてるからUI作り放題です**


#おわりに
とまあこんなかんじで大規模文書をトピックごとに分類させてUIを作りました．

**ユーザが入力した検索エンジンの結果だけでは閲覧できないページが多々ある**

**自分の知らなかった世の中のトピックが一覧でわかる**

という意味ではこのインタフェースの有用性はあるように思える