トピックモデル（LDA）で福祉ビジネスのSNS解析

福祉ビジネスを使わないようにアカウント
https://twitter.com/evidencefukusi

でbotを動かしているが
https://github.com/biones/misc/blob/main/twitterbot.py
ユーザーが業者かどうかを判定したい。
プロフィールに~事業所とあれば業者である確率が高いみたいにルールベース＆手動ラベル付けみたいなのがベストなんだろうけど、せっかくなのでラベルなし、教師なしでやりたい。

tweepyで取得し、sqliteに入れていく。スキーマレスで十分なけど、sqliteのjsonのネストした方に入れていくやり方がすぐわからなかったので,普通に。

LDAは文書に対する主成分分析みたいなもので、ドキュメント（今回はプロフィールとアカウント名）の単語BOW表現が、潜在トピックから生成されると仮定するようなモデル。

ちなみに、ツイートを入れると、情報が増えすぎて精度が悪かった。

放課後デイサービスや、就労移行支援など5つ程度のキーワードの検索結果からのユーザーリストで5600件。
リストは
https://docs.google.com/spreadsheets/d/14QDorw413lhtdKY0Krpw0sj0zD3wy3n8-1wpWnxFxW4/edit?usp=sharing

search_query	
A型事業所	211
B型事業所	180
作業所	3619
就労移行支援	586
就労継続支援	139
放課後デイ	369
放課後デイサービス	769

作業所というキーワードだけやたら多く(3700件)、除外しないと業者の特定はできないかもしれない。



```python
名詞限定でトピック数30まの各上位２０ワードは

0 ['こと' 'twitter' '大阪' '所属' '自分' '日々' 'アカウント' '社会' '読書' '政治' 'さん' 'ため' '趣味'
 '日本' '映画' 'rt' '関係' 'リツイート' 'フォロー' '目標']
1 ['bot' '在住' '日常' 'イラスト' 'web' '現在' '出身' '仕事' 'さん' 'フォロバ' 'アカウント' 'ブログ'
 'it' '支援' 'フォロー' '日々' 'ため' 'twitter' '読書' '関係']
2 ['メイン' 'fgo' 'ポケモン' '放課後' '予定' 'デイサービス' '野球' '最近' '児童' '成人' '現在' 'ゲーム'
 '支援' '中心' '発達' '趣味' '相談' '施設' '関係' '公式']
3 ['バイク' '作業所' '知的障害' '開始' '問題' '政治' '軽度' 'b型' '通所' '発達障害' '社会' '持ち' '自閉症'
 '障害' '仕事' '趣味' '応援' '毎日' 'ため' '息子']
4 ['adhd' '発達障害' 'asd' '自閉症' 'うつ病' '現在' 'スペクトラム' '長男' '診断' '息子' '発達' '障害'
 'フォロー' '無言' '当事者' '不登校' '支援' 'あり' '2級' '手帳']
5 ['福祉' '生活' '済み' 'it' '教育' '社会' '成人' '児童' '施設' '病気' 'サービス' '支援' '中心' 'こと'
 '関係' '興味' '障害者' '情報' '最近' '障害']
6 ['vtuber' '配信' '以上' '実況' '趣味' 'ゲーム' 'さん' 'ママ' '動画' 'ファン' 'youtube' 'アイコン'
 '個人' '所属' '応援' 'dm' 'イラスト' '公式' 'アカウント' 'ヘッダー']
7 ['アイコン' 'ヘッダー' 'さん' '相互' '料理' '画像' '目標' 'フォロー' 'フォロバ' 'dm' 'rt' 'エロ' '読書'
 'イラスト' '歓迎' '趣味' '現在' 'ツイート' '無言' 'ちゃん']
8 ['子ども' '制作' '子育て' '支援' '発達' 'お仕事' '全国' '精神' 'web' 'たち' '趣味' '仕事' 'デザイン'
 'アカウント' 'ママ' 'ツイート' '関係' '児童' '福祉' '勉強']
9 ['ブログ' '毎日' 'アカ' '女子' '雑食' '出身' '愚痴' '中心' '成人' '趣味' '読書' 'rt' 'さん' '現在'
 'アカウント' 'ツイ' '仕事' 'アニメ' '注意' '関係']
10 ['フォロー' '無言' 'アニメ' 'あと' '歓迎' '鉄道' 'ゲーム' '漫画' 'フォロバ' '趣味' '音楽' '映画' '基本'
 '日常' 'アカウント' 'rt' '読書' '最近' '関係' '写真']
11 ['ちゃん' '自分' '動物' '名前' '女性' 'etc' 'さん' '現在' 'アカウント' '趣味' '日々' '関係' '社会'
 '画像' 'twitter' '応援' '児童' '映画' 'ブログ' 'dm']
12 ['ゲーム' '初心者' 'ff' '小説' 'たち' 'アカウント' 'イラスト' 'メイン' '中心' 'twitter' 'フォロー'
 'さん' 'アイコン' '創作' '日々' '映画' '成人' 'ヘッダー' '興味' '日常']
13 ['音楽' '世界' '原発' '反対' 'サイト' 'デザイン' '映画' '日本' '趣味' '社会' '政治' 'dm' '中心' 'ため'
 '読書' '動物' '支援' '日々' 'こと' '仕事']
14 ['勉強' 'あり' '介護' '以外' '関係' '読書' '趣味' '日々' '仕事' 'ブログ' 'アカウント' '社会' '現在' '動画'
 '息子' '障害' '発達障害' '音楽' 'さん' 'ため']
15 ['人生' '地域' 'エロ' '療育' '不登校' '息子' 'ため' '自分' '日々' '発達障害' '相談' '支援' '注意' '関係'
 '関連' '活動' '歓迎' '愚痴' '中心' '発達']
16 ['youtube' '動画' '漫画' 'ツイ' '子供' '固定' '仕事' 'ゲーム' 'さん' '最近' '呟き' '依頼' '応援'
 '現在' '中心' 'フォロー' 'ブログ' 'イラスト' '無言' '音楽']
17 ['rt' 'dm' '時間' '依頼' '注意' 'ラジオ' '映画' '息子' 'お仕事' 'フォロー' 'フォロバ' 'さん' 'アカウント'
 'ゲーム' '画像' '関係' '持ち' '中心' '副業' 'ブロック']
18 ['情報' 'くん' '発信' '募集中' '呟き' '育児' 'ため' 'サイト' 'ブログ' 'twitter' 'フォロー' 'アカウント'
 '自分' 'こと' 'rt' '仕事' 'さん' '中心' '地域' '関係']
19 ['ため' '基本' 'love' 'リツイート' '副業' '家族' '経験' 'dm' 'アカウント' 'あり' '日々' 'エロ' '画像'
 '最近' 'さん' '相談' 'ビジネス' '会社' '自分' '関係']
20 ['障害' '双極' '不安' '持ち' 'hsp' 'パニック' '2級' '手帳' '闘病' '適応' '障害者' 'うつ病' 'adhd'
 '病気' '無言' '現在' '発達障害' '精神疾患' '社会' '診断']
21 ['事業所' 'no' '就労継続支援' '就労' '支援' 'b型' '日々' '就労移行支援' '障がい' '障がい者' 'a型' '福祉'
 '障害者' '通所' '相談' '仕事' '障害' '作業所' 'サービス' '生活']
22 ['日本' '公式' 'アカウント' 'イベント' 'ライブ' '全て' '株式会社' 'ママ' '応援' 'ビジネス' '情報'
 'twitter' '政治' '社会' '全国' '会社' '関係' 'dm' '副業' '活動']
23 ['時々' '成人' '活動' '生まれ' '関連' 'ニュース' '相談' 'アカウント' '公式' '社会' '趣味' 'twitter'
 'フォロー' '情報' 'サイト' '中心' 'サービス' '以上' '政治' '動画']
24 ['最近' '統合' '失調' 'ファン' 'なし' '2級' '趣味' '手帳' '現在' '障害' '作業所' 'b型' '発達障害' 'さん'
 '音楽' '毎日' '病気' 'あり' '闘病' '精神疾患']
25 ['ツイート' 'みんな' 'リツイート' 'ファン' '関係' '自分' 'フォロー' '仕事' 'アカウント' '日々' 'twitter'
 '歓迎' '趣味' '現在' '当事者' '最近' '目標' '応援' '中心' 'こと']
26 ['興味' '企画' 'リプ' 'ミュート' '個人' 'rt' 'フォロー' 'ブロック' 'dm' 'アカウント' '応援' 'さん' '愚痴'
 '政治' '現在' '呟き' '歓迎' 'twitter' '趣味' 'あり']
27 ['写真' '創作' '作品' '先生' 'ブロック' '無断' '転載' '成人' 'bl' '日常' 'イラスト' '漫画' 'ゲーム'
 'アカウント' '済み' 'フォロー' 'さん' 'メイン' '画像' '基本']
28 ['さん' '東京' 'おじ' '心理' '会社' '中心' 'ファン' '発達障害' '社会' 'アカウント' '音楽' 'フォロー' 'ちゃん'
 '呟き' '応援' 'うつ病' 'アニメ' '公式' '現在' '趣味']
29 ['もの' '人間' 'さん' '自分' '興味' '趣味' '音楽' 'rt' '精神疾患' 'イラスト' '映画' '写真' 'ゲーム'
 'バイク' '現在' 'あり' '呟き' '中心' 'こと' 'フォロー']

名詞、動詞でトピック数1０まの各上位２０ワードは

1 ['情報' '福祉' '支援' '事業所' '公式' 'アカウント' '目指す' 'いる' '就労継続支援' '就労' '介護' '地域' 'する'
 '仕事' 'ある' 'b型' '就労移行支援' '障害者' 'ニュース' '運営']
2 ['フォロー' 'ちゃん' '無言' 'rt' '雑多' '失礼' 'ツイート' 'フォロバ' '好き' '気軽' 'さん' 'ブロック' 'すむ'
 'する' '作る' '時々' '呟く' 'アカ' '注意' '推す']
3 ['統合' '失調' 'dm' '依頼' 'お仕事' 'いい' '世界' '暮らす' '企画' '病気' '副業' 'ツイ' 'なる' '子供'
 '関係' '好き' 'ある' 'する' 'ない' '仕事']
4 ['さん' 'アイコン' 'くん' '好き' 'ヘッダー' 'もの' '在住' '音楽' '初心者' 'no' '人間' '描く' 'あと'
 '時間' '大好き' 'ちゃん' 'ある' 'する' '願う' 'なる']
5 ['障害' '双極' '生きる' 'うつ病' '発達障害' '2級' '不安' '持ち' 'hsp' '作業所' '手帳' '人生' 'あり'
 'パニック' 'ゆう' 'adhd' '生まれ' 'ブログ' '現在' 'asd']
6 ['ゲーム' '大好き' '趣味' '好き' 'アニメ' 'やる' '漫画' '映画' '動画' '作品' '投稿' 'youtube' '画像'
 '読書' '音楽' 'web' '作る' '鉄道' '先生' 'さん']
7 ['好き' 'する' 'vtuber' 'こと' '東京' '自分' '行く' '楽しい' 'ない' 'さん' '配信' '応援' '思う'
 'いう' 'みんな' 'なる' 'よる' '考える' '動物' '見る']
8 ['推す' '成人' '最近' '創作' 'さん' 'メイン' '好き' '願う' 'fgo' 'フォロー' 'ハマる' '写真' '済み'
 'リツイート' '書く' '興味' 'する' '呟き' '読む' '小説']
9 ['日本' '発信' '生活' '子ども' '放課後' 'デイサービス' '良い' '相互' '自由' '相談' '情報' 'サイト' '児童'
 '女子' '持つ' 'こと' 'する' 'ある' 'フォロー' 'ff']
10 ['adhd' 'bot' 'asd' '息子' '自閉症' 'ため' '発達' '活動' '日々' '発達障害' 'つぶやく' '予定' '育児'
 '勉強' '診断' 'つく' 'ある' 'する' '知的障害' '家族']

1つめが就労系サービス、5は障害について、６は趣味に関する事みたいな解釈ができ、各ユーザーに1-10のトピックを降る事ができる

1 ['描く' 'イラスト' '生きる' '生まれ' '創作' '漫画' '行く' '子ども' 'なる' '好き' 'dm' 'する' '依頼'
 'お仕事' 'ゲーム' 'ない' '仕事' 'ある' '成人' '思う']
2 ['福祉' '事業所' '使う' '就労移行支援' '就労' '就労継続支援' '支援' 'アカ' 'b型' '世界' 'a型' '精神' 'する'
 'できる' '仕事' 'ある' '障害者' '社会' '障害' 'こと']
3 ['支援' '発達' '介護' '相談' 'ff' '依頼' '放課後' 'dm' 'デイサービス' '児童' '副業' 'ある' '地域'
 '自閉症' '知的障害' '子ども' 'する' '仕事' '気軽' 'お仕事']
4 ['情報' '推す' 'する' 'サイト' '発信' 'ニュース' '読む' '嬉しい' 'ママ' '見る' 'twitter' '紹介'
 'アカウント' 'さん' '願う' '気軽' '地域' '公式' 'なる' 'フォロー']
5 ['もの' 'アカウント' '公式' 'web' '小説' 'アニメ' '以上' '好き' '鉄道' '趣味' '持ち' 'ゲーム' '漫画'
 'ある' 'ない' '紹介' 'つぶやく' 'youtube' 'なる' '映画']
6 ['好き' '在住' '東京' '興味' '画像' 'あり' '働く' 'お仕事' '経験' 'する' 'ある' '世界' 'よる' '仕事'
 'なる' 'ブログ' '関係' 'こと' '持つ' '発信']
7 ['失調' '統合' '目指す' '人生' '趣味' '病気' '知る' '読書' '楽しむ' '現在' 'みんな' '目標' '2級' '好き'
 'する' 'なる' '障害' '生きる' '作業所' 'こと']
8 ['動画' '配信' 'youtube' '作品' '良い' '投稿' 'メイン' '日々' 'ゲーム' '好き' 'する' '作る' 'なる'
 'やる' '実況' '関係' 'アカウント' '世界' 'フォロー' 'さん']
9 ['障害' '双極' '2級' '不安' 'うつ病' '手帳' '作業所' '発達障害' 'hsp' 'パニック' 'adhd' 'asd'
 '持ち' '持つ' '診断' 'b型' '通う' '通所' 'fgo' '生きる']
10 ['大好き' 'やる' '音楽' '最近' 'こと' '好き' 'さん' '映画' '趣味' '時間' 'ゲーム' 'する' 'なる' '呟く'
 '願う' '動物' 'ない' '自分' '思う' 'ハマる']
11 ['rt' '多め' '日常' '作る' '時々' '基本' '注意' 'ブロック' '多い' 'なし' '成人' 'フォロー' '好き' '苦手'
 'ツイ' 'リプ' '呟く' '関連' 'する' '自由']
12 ['くん' '活動' '人間' 'ブログ' 'いう' '子供' 'こと' 'する' '運営' 'なる' '思う' 'ある' 'さん' '大好き'
 '人生' '書く' '現在' '中心' '発信' 'やる']
13 ['フォロー' '無言' '失礼' '歓迎' 'すむ' '相互' 'ゆう' '気軽' '好き' '繋がる' 'フォロバ' 'よる' '願う'
 'さん' 'する' '大好き' 'dm' 'なる' 'アニメ' 'リプ']
14 ['ツイート' '写真' 'ため' 'リツイート' '願う' '自由' '予定' '中心' 'する' 'フォロー' 'さん' '呟き' '障害者'
 '好き' 'アカウント' '思う' '情報' 'ある' 'なる' 'ない']
15 ['vtuber' 'bot' '初心者' '女子' 'バイク' 'つく' '配信' 'ゲーム' 'ハマる' '勉強' 'さん' 'dm' '好き'
 'フォロー' 'fgo' 'つぶやく' '見る' '大好き' 'ママ' 'twitter']
16 ['成人' 'adhd' 'asd' '発達障害' '済み' '企画' '言う' '毎日' '診断' '息子' '自閉症' '創作' 'つぶやく'
 '家族' 'なる' 'ある' '読む' '発達' '好き' '支援']
17 ['いる' '楽しい' 'あと' '息子' '暮らす' '頑張る' '書く' '育児' 'ない' '自分' '好き' 'フォロバ' 'する'
 'さん' 'なる' '楽しむ' '日々' 'こと' 'あり' 'ある']
18 ['さん' 'アイコン' 'ヘッダー' '愛する' 'いい' 'ゲーム' '好き' '実況' 'vtuber' 'ある' '描く' '大好き'
 '推す' 'なる' 'ちゃん' 'アニメ' 'する' '趣味' 'ない' '呟く']
19 ['日本' '社会' '生活' 'no' '政治' '考える' 'する' '思う' '自分' 'こと' 'なる' 'ない' '生きる' '世界'
 'ため' '応援' 'ある' '知る' '呟く' '持つ']
20 ['ちゃん' '雑多' 'ファン' '応援' '先生' '推す' 'さん' '大好き' '好き' '願う' 'ゲーム' 'メイン' '成人'
 'ママ' '勉強' '趣味' '呟く' 'くん' 'ff' 'する']


30と細かくすると

1 ['成人' '創作' '日常' '済み' '企画' '画像' 'する' '描く' '好き' 'ゲーム' 'フォロー' 'ない' '自由' '注意'
 '多め' 'ある' '願う' 'さん' 'アカウント' '漫画']
2 ['生きる' '東京' '発達障害' '作品' '地域' 'hsp' 'うつ病' '診断' 'ある' '好き' 'adhd' 'よる' '活動'
 'なる' '社会' 'つく' '願う' '自分' 'する' '家族']
3 ['ブロック' '気軽' 'フォロー' '関係' 'あり' 'みんな' '多い' '注意' '苦手' '活動' '好き' '嬉しい' 'する'
 'ツイート' '歓迎' 'rt' 'なる' '自由' '基本' 'ない']
4 ['bot' 'つぶやく' 'ツイート' '現在' 'つく' '考える' 'こと' 'する' '思う' '呟く' '願う' 'フォロー' 'ある'
 'さん' 'アカウント' 'イラスト' 'リプ' '時間' '運営' '日々']
5 ['くん' '放課後' 'デイサービス' '発達' '子ども' '児童' 'イラスト' '動物' '支援' 'ある' 'こと' '相談' '活動'
 'する' 'つく' '仕事' '呟く' '好き' '子供' '思う']
6 ['vtuber' 'youtube' '配信' '動画' '投稿' 'ゲーム' '実況' '中心' 'さん' '好き' 'dm' 'ファン'
 'なる' 'ママ' '依頼' '見る' '推す' 'イラスト' 'する' 'フォロー']
7 ['情報' 'ff' '発信' '障害者' 'サイト' 'アカウント' '地域' '公式' 'ある' 'こと' 'する' '中心' '関係'
 '発達' '紹介' '願う' 'なる' '仕事' '思う' '活動']
8 ['描く' 'ゲーム' '漫画' '見る' '人生' '映画' '好き' '持つ' 'サイト' 'アニメ' 'イラスト' 'なる' '趣味'
 '自分' 'ない' 'する' '注意' '中心' '仕事' '勉強']
9 ['ブログ' 'web' '楽しむ' '副業' '紹介' '人生' '発信' '書く' 'なる' '趣味' '仕事' 'youtube' '中心'
 'twitter' '勉強' '経験' '生きる' '現在' 'こと' 'つく']
10 ['読む' 'リツイート' '暮らす' 'ツイ' '介護' '書く' 'さん' 'する' 'ない' '多い' 'adhd' '願う' 'フォロー'
 '写真' '自由' 'ツイート' '読書' '基本' '仕事' 'なる']
11 ['いう' 'する' '人間' '良い' '以上' 'ある' 'こと' '仕事' 'なる' 'やる' '思う' 'さん' '家族' 'ゲーム'
 '知る' 'ない' '活動' '世界' '生きる' '人生']
12 ['メイン' '公式' 'fgo' 'アカウント' '時間' 'ニュース' 'ゲーム' 'する' '情報' '中心' '成人' '紹介' 'やる'
 'さん' '動物' '趣味' '最近' '気軽' 'イラスト' 'ある']
13 ['言う' '日々' '最近' '愛する' 'ない' 'こと' 'よる' '育児' 'する' 'さん' 'やる' 'なる' 'ある' '仕事'
 '思う' '自分' '世界' '好き' 'rt' 'つく']
14 ['福祉' '支援' '事業所' '就労継続支援' '就労' '就労移行支援' '運営' 'b型' '世界' '介護' '社会' 'する' '相談'
 'a型' '障害' 'ある' '仕事' '障害者' '生活' '働く']
15 ['rt' 'いい' 'フォロバ' 'あと' '関連' '多め' '呟き' '好き' 'さん' 'ある' 'ツイート' 'フォロー' '基本'
 'する' '趣味' 'ゲーム' 'ない' 'アカウント' '思う' '政治']
16 ['twitter' '生活' '先生' '政治' '社会' '思う' '日本' '自分' 'なる' '願う' 'ツイート' 'ある' 'する'
 '世界' 'ない' '日々' 'rt' 'アカウント' '生きる' 'さん']
17 ['統合' '失調' '作業所' 'b型' '2級' '通う' '通所' '障害' '発達障害' 'する' '好き' '願う' '診断' '就労'
 'うつ病' '手帳' '生きる' '趣味' '現在' 'こと']
18 ['雑多' '写真' 'ゆう' 'ママ' '鉄道' '基本' '好き' '推す' '願う' 'さん' 'ちゃん' '呟く' 'ゲーム' 'ファン'
 'アカウント' 'なる' 'メイン' 'フォロー' '苦手' '趣味']
19 ['ちゃん' 'いる' '行く' 'ファン' '息子' '応援' 'さん' '好き' '大好き' '推す' '願う' 'ない' 'する' '思う'
 '自分' 'くん' 'うつ病' 'ある' '自閉症' 'なる']
20 ['推す' 'さん' '予定' '時々' '毎日' 'お仕事' '好き' 'する' '自閉症' '育児' 'アニメ' '世界' 'ゲーム'
 'ちゃん' 'なる' '支援' '息子' '知的障害' '発達' '嬉しい']
21 ['障害' '双極' '持ち' '不安' 'no' 'adhd' '発達障害' '手帳' 'パニック' '自閉症' '2級' 'asd'
 '知的障害' 'うつ病' 'hsp' '病気' 'あり' '現在' '社会' 'なる']
22 ['楽しい' '目指す' '頑張る' '願う' '書く' '自分' 'する' 'なる' '好き' 'さん' 'こと' '思う' '毎日' 'ある'
 '呟く' 'ない' 'あと' '趣味' 'アカウント' 'フォロー']
23 ['アイコン' 'ヘッダー' 'dm' 'さん' '依頼' '経験' '描く' '画像' 'ちゃん' '現在' '好き' 'ある' '相談'
 '活動' 'する' '映画' 'ツイート' 'vtuber' '生きる' 'アカウント']
24 ['好き' 'もの' 'adhd' 'バイク' 'asd' '勉強' '目標' '診断' 'する' '自由' 'ない' 'ある' '人生' '自分'
 '趣味' 'こと' '生きる' '現在' '最近' '発達障害']
25 ['興味' '初心者' 'ハマる' '女子' 'なし' '知る' 'アニメ' '好き' 'ある' '最近' 'ゲーム' '推す' 'さん' '世界'
 'あり' 'こと' '音楽' 'なる' '漫画' '願う']
26 ['ため' '使う' 'できる' '相談' 'ある' '精神' 'する' 'アカウント' 'ない' 'つく' '診断' 'こと' '現在'
 '嬉しい' '社会' '支援' '作る' 'リプ' '日本' 'フォロー']
27 ['日本' '音楽' '在住' '読書' '小説' '好き' '映画' '趣味' 'する' '社会' '世界' '写真' 'さん' '生きる'
 '呟く' 'ゲーム' '活動' 'アニメ' '応援' '知る']
28 ['大好き' '作る' '趣味' 'さん' 'こと' '呟く' '働く' 'アカウント' '好き' '最近' '願う' 'なる' 'する' '思う'
 'ある' 'ゲーム' '自分' '多い' 'やる' '応援']
29 ['フォロー' '無言' '失礼' 'すむ' '繋がる' '好き' '自由' '歓迎' 'フォロバ' 'する' '気軽' '大好き' '願う'
 'さん' 'アニメ' 'ある' '応援' 'アカウント' '日常' '呟く']
30 ['やる' 'アカ' '生まれ' '相互' 'フォロー' '子供' 'リプ' '歓迎' '願う' 'dm' 'rt' '好き' '多め' '呟く'
 '自由' '息子' 'ツイート' 'アカウント' '副業' '応援']

```


このトピック14が業者っぽいので、多少は判定できています（精度未検証、すべては上のリストからtopic==13を絞ってみてください）
<table border="1" class="dataframe">  <thead>    <tr style="text-align: right;">      <th></th>      <th>id</th>      <th>screen_name</th>      <th>name</th>      <th>search_query</th>      <th>description</th>      <th>tweet</th>      <th>location</th>      <th>json</th>      <th>topic</th>    </tr>  </thead>  <tbody>    <tr>      <th>4429</th>      <td>1223424924489879553</td>      <td>gphoWBDhWdFT8Gu</td>      <td>うえすぎ@池袋53</td>      <td>放課後デイ</td>      <td>障害福祉業界で働く社会福祉士。行政書士の開業準備中。\\n障害福祉に関わる「行政手続きの専門家」として書類作成のプロを目指してます。\\n元きょうだい児。自閉症児の親。\\n筋トレが日課。ポテチを食べない。水を1日2L飲む。24時には就寝。\\n仕事で受けたストレスは筋トレで発散。</td>      <td>RT @KomoKomosas: 入居施設、生活介護、放課後デイなどで、活動にドライブがあります。大抵はバンかミニバスで8人程乗ります。ドライブと言えば聞こえは良いのですが、人手も足りずに行う都合の良い活動でもあるのです。みんなシートベルトを締めて、バスは動いているので、かなり…</td>      <td></td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>348</th>      <td>115342733</td>      <td>npotanto</td>      <td>たんと。</td>      <td>放課後デイサービス</td>      <td>長野県佐久市周辺の障害のある方々の支援をしている「NPO法人たんと。」です。</td>      <td>【情報提供求む！！】たんとでは、障がい児の居場所拡大のため放課後等デイサービスの新しい場所を探しています。\\n条件などは、こちら↓のInstagramをご覧になって、条件にあう物件があればぜひご紹介ください。\\nhttps://t.co/GtgxDVVdK5</td>      <td>長野県佐久市</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>4132</th>      <td>1173286882114822145</td>      <td>Raboyosiyosi</td>      <td>よしよし</td>      <td>B型事業所</td>      <td>社会起業家。専門商社としてソーシャルビジネス会社を起業。就労継続支援B型でオリジナルブランド商品を年商１千万以上売上げ、平均工賃を３倍以上に増やす。販売モデルを全国の就労支援施設に広げる取り組みを始め、障害者雇用に取り組む企業のコンサル、就労支援事業所のアドバイザー。企業と福祉のハブとして活躍したい。</td>      <td>全国のB型事業所を新しい仕事で繋ぐ仕組みをスタートして約一年。現在4県10法人が頑張っている。売り上げが高い所は月20万円を超える収入が確保できるようになった。Bでこの収入は凄いと感心してる👍\\n\\n#就労継続支援B型事業所\\n＃工賃向上</td>      <td>岡山県</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>5330</th>      <td>1331576547476574208</td>      <td>bTQsnAyP4jnuskt</td>      <td>病み垢😆</td>      <td>就労移行支援</td>      <td>大学4年で摂食障害。摂食障害が理由で大学院に行く夢を諦める事に。就活もできず、その後4年ほどフリーター。鬱がひどくなり1年ほど引きこもり。入院も経験。やっと人生立て直そうと2021年1月就労移行支援に通所開始。プログラミングとPC勉強中。犬が好き。登山とクロスバイクに憧れ。無言フォロー失礼します。</td>      <td>#ホメ療法 \\n走った\\n外にいた\\n就労移行支援ちょっとできた\\n体重落ちてた\\n湯船使った\\n散歩行った</td>      <td></td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>1109</th>      <td>428746679</td>      <td>MinuteOgayas</td>      <td>靖</td>      <td>放課後デイサービス</td>      <td>16歳バイク事故（99.9％脳死と言われたが２か月半後意識回復）１種１級の身体障がいがありますが障がいのある仲間にパソコン指導、カウンセラーしてます。\\n就労・余暇活動の為に障がい者が障がい者の為の出張パソコンインストラクターminute（ミニュート）https://t.co/JJOoR25SDD\u3000\\nインスタhttps://www.instag</td>      <td>【子ども・発達障がい・SDGs】をテーマとした「放課後等デイサービス『HEARTY』活動応援プロジェクト」オンライン事業説明会を3… https://t.co/hJaMjetUPN #r_blog</td>      <td>大阪府和泉市</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>5794</th>      <td>1369067098941485057</td>      <td>nekochan___suki</td>      <td>雨</td>      <td>B型事業所</td>      <td>♡♡♡闘病垢♡♡♡(L)GBTQ🌈♡境界知能♡不眠症♡境界性パーソナリティ障害♡毒親育ち♡Ｂ型事業所♡読書♡前向きに闘病してる方と繋がりたいです♡自傷画像載せてる方はフォロー控えてくれるとうれしいです😿♡</td>      <td>@hakanai_ao80 恋人があたしがＢ型事業所休まず1ヶ月いったらご褒美でかってくれるの🥰🥰</td>      <td>フォローは女の子のみでお願いします😿💗</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>3823</th>      <td>1116160230864211968</td>      <td>source_kouhou</td>      <td>ソース【就労移行支援】</td>      <td>就労移行支援</td>      <td>大阪の就労移行支援事業所です。メンタルに不安を感じている方、障がいを持っている方の就職、PCなどの資格取得を手厚くサポートします。状況により利用料・交通費無料。昼食、資格試験料補助。お問い合わせはこちら→https://t.co/oat27ht0i4</td>      <td>5日間の職場実習を終えて〜Mさんへインタビュー〜【就労移行支援 大阪 ソース三国ヶ丘】 | https://t.co/ZHraOUEPxY</td>      <td>大阪府堺市堺区新町3番7号 STCビル6階</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>3224</th>      <td>974467537848082433</td>      <td>nikonikoworks</td>      <td>就労移行支援事業所 にこにこワークス</td>      <td>就労移行支援</td>      <td>大阪市西区にある就労移行支援事業所。「就労（自立）」や「社会復帰（参加）」を目指す #障がい のある方を対象とするサービスです。環境に合わせた在宅支援が可能で、週１回１時間の通所から可能です💻 就職前には職場体験実習🏢就職後も安心サポートがあります😃 ✉️DMやLINE＠のお問い合わせ歓迎です✉️</td>      <td>『就労移行支援での訓練『グループPC』』\\nです。の様子はコチラ➡️ https://t.co/C0y93AiWBj就労移行支援での訓練『グループpc』～発達障害や/\\n事業所HPはこちら➡️https://t.co/QQRjdCyl1b\\n#大阪市 #精神疾患 #発達障害 #うつ病 https://t.co/Na91ooX1GY</td>      <td>大阪 大阪市 西区 南堀江</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>3235</th>      <td>976324091119480833</td>      <td>yasuco_deluxe</td>      <td>やすこ🍙☕️🎧</td>      <td>B型事業所</td>      <td>どの業界にいても異端だった私が辿り着いた世界は、「福祉」という名のダイバーシティでした。 就労継続支援B型事業所「イコロン村」のアジテーター(村長)です。</td>      <td>イコロン村を、B型と生活訓練での小規模多機能型事業所に編成し直す準備をしつつ、それを待たずにメリデン版訪問家族支援の実践をしたい。石狩市の自立支援協議会に話をしたが、お隣の当別町の窓口にも話に行く。</td>      <td>北海道石狩市</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>3234</th>      <td>976277156924813313</td>      <td>kuorio_npo</td>      <td>特定非営利活動法人くおりお</td>      <td>作業所</td>      <td>2018.4月に愛知県豊川市に開所した【生活介護事業所そらまめ】です。日々の出来事をつぶやいてます。利用者様募集中です。見学等随時受け付けております。（定員20名）</td>      <td>生活介護事業所「そらまめ」です。\\nおはようございます。\\n\\n『ただの預かりになっていませんか』\\n\\n利用者様一人ひとりに寄り添いながら成長が出来るよう個々の個性・特性を生かすための支援を意識し提供しています。\\nこれは洗濯バサミを色分けして付けて外していく作業になりますね(*^-^*)\\n\\n#豊川市 https://t.co/geoDDKcND5</td>      <td>愛知県豊川市御油町堺畑22番地2</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>1698</th>      <td>2357823480</td>      <td>Rideon_P_ROCK</td>      <td>來弩音（ライドン）</td>      <td>A型事業所</td>      <td>胸椎黄色靭帯骨化症と言う難病を患いながらA型事業所で働いています。妻&amp;オカメインコと共存中🐤ラッキーさんは虹の橋を渡りました😿今は銀ちゃんと言うホワイトフェイスを飼っています❤️趣味で音楽制作をしてます。ヒプマイ好き❗️❤︎運営ネットショップ❤︎Radiant Dear→https://t.co/TzDujQMSPz</td>      <td>A型事業所就労45日目のお昼休み。\\n快晴☀️\\n今日は最高気温が20℃近くなると言う事で、上着はネルシャツのみで出勤しています。風が少しあり外で休憩するには最適な気候です。\\n作業はハサミ作業✂️\\n午後もチョキチョキ頑張ります✌️ https://t.co/BbZFUg3oDQ</td>      <td>岐阜県大垣市</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>4146</th>      <td>1176732312249098240</td>      <td>nuchigusui_xyz</td>      <td>ぬっちーライフ 『小さな一歩が大きな力となる。あなたの踏み出す勇気を応援します！』</td>      <td>A型事業所</td>      <td>A型事業所メジャーサポートサービスで働くメンバーがピアサポート（当事者）の視点から運営する情報サイトです。働きたくない・人間関係が疲れる・人生が辛い、あるいは障害者手帳や障害年金を申請しようか悩んでいる。そんなあなたの「どうすればいい？」に役立つ情報を個性豊かなライター達がお届けします。</td>      <td>実際に就労継続支援A型事業所で働いている当人が、A型事業所の面接がいったいどんな感じで行われるのかについて自身の経験をもとに紹介します。\\n\\n#A型事業所\u3000#面接\u3000#障害者\\n\\nhttps://t.co/19eXoJjwI2</td>      <td>沖縄県那覇市久米</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>4425</th>      <td>1222735697863249922</td>      <td>ainowa_fukushi</td>      <td>社会福祉法人あいのわ福祉会</td>      <td>作業所</td>      <td>東京都足立区の社会福祉法人「あいのわ福祉会」公式ツイッターです。</td>      <td>神明福祉作業所では区内の様々な事業所様や同法人の施設などで清掃業務を請け負っています。\\n今まで清掃業務の経験がない利用者の方も本番同様の手順でトイレや窓、床などの清掃練習を行っています。清掃に興味を持って頂き、自信を持って本番の清掃業務に取り組むことが出来ています。 https://t.co/Z4v1l4ttUc</td>      <td>東京都足立区青井4-30-5</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>68</th>      <td>39713578</td>      <td>ponatsuko</td>      <td>Tokyo ponatsuko, #StayAtEV, Ph.D</td>      <td>放課後デイサービス</td>      <td>電気自動車とアウトドアにはまる、都内23区内サラリーマン、大学院講師。1人娘さんの父。橙レガシィ→青レガシィ→緑シロッコ→ 黄 #日産リーフ (2018年11月納車) #EV。災害ボランティア、東京オリンピックボランティア 、システムズエンジニアリング、社会福祉 #大森赤十字病院にエールを何度でも</td>      <td>放課後デイ、一斉に営業停止\u3000参入企業が報酬不正受給：朝日新聞デジタル https://t.co/xcHUv9PzDl\\n\\n「責任者の条件を満たす人を募集しても集まらず、併設するデイサービスの職員を管理者としてしまった」</td>      <td>Tokyo</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>3831</th>      <td>1118658960477736960</td>      <td>dai2keyaki</td>      <td>就労継続支援B型事業所ブレンド</td>      <td>B型事業所</td>      <td>相模原市南区大野台で活動する就労継続支援B型事業所ブレンドです。日々の活動の様子をツイートします。\\nメンバーさんも職員もランダムにツイートしています、よろしくお願いします。</td>      <td>就労継続支援B型事業所ブレンドのシロクマTシャツ https://t.co/ISBJDxktMi #suzuri\\n仲良し親子</td>      <td></td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>2890</th>      <td>882364858569695233</td>      <td>a70mrsouKP7QnLH</td>      <td>島川修一</td>      <td>就労継続支援</td>      <td>当事者による当事者のための障害・福祉・教育の情報サイト「AKARI」編集長|就労継続支援A型事業所TANOSHIKA CREATIVE職業指導員|ライティング事業|教員時代、小中高特支児相など、9年間で15校に勤務|卓球歴20年|自称前前前世は中島敦</td>      <td>@abe_hidane 興味あるか分かりませんが、今自分がやっている就労継続支援A型など、障害者福祉の職業指導員も面白いですよ😊\\n\\n資格よりもスキルとハートがある人が求められる業界ですし、安倍さんは当事者でもあるので支援者としては適任だと思います。\\n\\nこれうちのサイトです。\\nhttps://t.co/5WdNmZx1um</td>      <td>福岡県久留米市</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>3819</th>      <td>1115206404632002560</td>      <td>karamawari1904</td>      <td>ポッキー@19卒</td>      <td>就労移行支援</td>      <td>19卒 ニート うつ病にて精神科通院中 就労移行支援のサポート受けます</td>      <td>明後日就労移行支援の施設側と面談になった。面談しても何も変わらないのに面談する意味は何なんだろう。話したくないし行きたくない。</td>      <td></td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>1935</th>      <td>2913787429</td>      <td>23_23ato</td>      <td>ねづこ</td>      <td>放課後デイサービス</td>      <td>精神、就労、通所介護、重心、小児（←今ここ）</td>      <td>RT @kenji1761: それにしても、特別支援学校卒業後の進路というか、居場所というか、障害者作業所は、どこも定員一杯でパンク状態が続いています。\\n出る利用者さんもいないから、高齢化も進んでいます。\\n今の学齢期の子には、放課後等デイサービスなど増えてるけど、卒業後の障害者…</td>      <td>日本</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>326</th>      <td>113351506</td>      <td>takecho1</td>      <td>竹ちょ</td>      <td>A型事業所</td>      <td>障がい者アーティスト・障害者就労事業所に勤務。ADHD(注意欠如・多動性障害)・うつ病と診断。萌えキャラ・アニメキャラ描いてます♪ pixiv https://t.co/ZL1HbbfIxu  pixivFANBOX https://t.co/DjuyofjG0K</td>      <td>RT @takecho1: 今日は午前中にメンタルクリニックを受診した後、午後は栃木県栃木市の就労継続支援A型事業所で、タブレットPCを使い、新たに障がい者アートの某イラストコンペへ応募する予定のイラスト作品の制作を、始めました♪(^。^)(*^o^)(^O^) #障がい者アー…</td>      <td>栃木県栃木市\u3000(栃木県佐野市生まれ)</td>      <td>None</td>      <td>13</td>    </tr>    <tr>      <th>1655</th>      <td>2280449743</td>      <td>key815rd</td>      <td>蒼井そら@発達ゆるゆる日記</td>      <td>就労移行支援</td>      <td>発達障害・精神障害持ちでも自分らしく、楽しく生きる(人 •͈ᴗ•͈)当事者会「ＳＳＫ虹色（障害者の幸せを考える会）」主催者。愛知県精神障害者ピアサポーター登録中。現在⇒就労継続支援Ａ型に通所中。目標⇒私設図書館を作ること。 #はてなブログ #note #褒め療法 #精神と発達の当事者会 #個人事業主になる</td>      <td>就Ａ・Ｂの事業所に見学に行こうと思いたち、電話する\\n\\n「株式会社○○ですー」\\n「（あれ？一般社団法人じゃなかったっけ…？）ホームページ見ました、見学したいです」\\n「はいー、契約（見学の聞き間違い？）希望ですね！」\\n「？？…就労支援されてるところですよね？」\\n「はい、移行支援してます！」</td>      <td>愛知県</td>      <td>None</td>      <td>13</td>    </tr>  </tbody></table>



```python


import tweepy
import json
from requests_oauthlib import OAuth1Session
import time



def getApiInstance():
    # 認証キーの設定
    # OAuth認証
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    # APIのインスタンスを生成
    api = tweepy.API(auth, wait_on_rate_limit = True)
    return api

api=getApiInstance()
screen_name="evidencefukusi"
user=api.get_user(screen_name="evidencefukusi")



search_query="作業所"
#search_query="A型事業所"
#res=api.search(",count=1000)
#res=api.search("A型事業所",count=1000)
#res=api.search("スポーツ",count=1000)
tweet=tweepy.Cursor(api.search, q =search_query,  include_entities = True, tweet_mode = 'extended', lang = 'ja').items(5000)    

#tweet=api.search(search_query,count=5000)
#texts=[r.full_text for  r in tweet]
texts=[]
df=[]
#texts=[r.user.description+"  "+r.full_text for  r in tweet] 
#texts=[r.user.description+"  "+r.full_text for  r in tweet] 

def insertusertable(r):
    u=r.user
    dd=[u.id,u.screen_name,u.name,search_query,u.description,r.full_text,u.location]    
    cur.execute("insert into users(id,screen_name,name,search_query,description,tweet,location) values(?,?,?,?,?,?,?)",dd)
    
def inserttweet(tw):
    tw=[r.id,r.full_text,r.user.screen_name,r.user.name,r.user.description,search_query,r.created_at,r.user.location,r.retweet_count]
    cur.execute("insert into tweets(id,tweet,screen_name,name,description,search_query,created_at,location,retweet_count) values(?,?,?,?,?,?,?,?,?)",tw)
    
import json
import sqlite3
dbname = 'fukusi.db'
conn = sqlite3.connect(dbname)
cur=conn.cursor()
for r in tweet:    
    d={"id":r.id,"name":r.user.name,"screen_name":r.user.screen_name,"location":r.user.location,"description":r.user.description,"search_query":search_query,"tweet":r.full_text,"retweet_count":r.retweet_count}

    try:
        insertusertable(r)
        #cur.execute("insert into users(id,screen_name,name,search_query,description,tweet,location) values(?,?,?,?,?,?,?)",dd)        
    except:
        pass
    try:
        inserttweet(r)
    except:
        pass
    df.append(d)

conn.commit()
conn.close()

conn = sqlite3.connect(dbname)
df=pd.read_sql_query('SELECT * FROM users', conn)
df_tw=pd.read_sql_query('SELECT * FROM tweets', conn)

df=df.sort_values("name")

```


```python

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
import spacy
import ginza
from functools import *
import numpy as np 
import re
import pandas as pd

#stop_words = list(ginza.stop_words)
#stop_words.extend(['max', 'エスマックス', 'smaxjp'])
def soften(word):
    replace_table = {
      '為る': 'する', '成る': 'なる', '遣る': 'やる', '有る': 'ある', '無い': 'ない',
      '御洒落': 'おしゃれ', '撫子': 'なでしこ', '未だ未だ': 'まだまだ', '迚も': 'とても',
      '唯': 'ただ', '筈': 'はず', '若し': 'もし'
  }
    return replace_table.get(word, word)



def make_docmat(texts,cvtype="count"):    
    nlp = spacy.load('ja_ginza')
    NGRAM=1
    MAX_DF=0.95
    MIN_DF=0.001
    NUM_VOCAB=200

    # print(texts)
    #https://yu-nix.com/blog/2021/3/3/spacy-pos-list/
    POS_NOUN = ['PROPN', 'NOUN',"VERB","ADJ"] # 固有名詞と名詞
    #POS_NOUN = ['PROPN', 'NOUN'] # 固有名詞と名詞
    tokens = []
    for text in texts:
        #text = re.sub(r'^https?:\/\/.*[\r\n]*', '', text, flags=re.MULTILINE)
        text=re.sub(r"(https?|ftp)(:\/\/[-_\.!~*\'()a-zA-Z0-9;\/?:\@&=\+$,%#]+)", "" ,text) 
        try:
            doc=nlp(text)   
        except:
            tokens.append("")
            continue
        tmp=""
        for d in doc:
            if d.pos_ in POS_NOUN or len(POS_NOUN) ==0:
                tmp+=" "+d.lemma_

        tokens.append(tmp)
        #print(tmp)
    
    if cvtype=="count":
        cv = CountVectorizer(stop_words=[],ngram_range=(1,NGRAM), max_df=MAX_DF, min_df=MIN_DF, max_features=NUM_VOCAB)
    else:
        cv = TfidfVectorizer(stop_words=[],ngram_range=(1,NGRAM), max_df=MAX_DF, min_df=MIN_DF, max_features=NUM_VOCAB)
        
    docmat = cv.fit_transform(tokens).toarray()
    print("Shape of X : %s" % (docmat.shape,))
    vocab  = cv.vocabulary_ 
    print("Num of vocab : %s" % (len(vocab)))
    print("Sample of vocab : %s" % (list(vocab.keys())[:-1]))
    class ret:
        pass
    
    w=np.array(cv.get_feature_names())
    freq=np.sum(docmat,axis=0)
    idx=np.argsort(freq)[::-1]
    freq=freq[idx]
    w=w[idx]
    
    ret.docmat=pd.DataFrame(docmat[:,idx])
    ret.docmat.columns=w
    ret.freq=freq
    ret.texts=texts
    ret.word_freq=pd.DataFrame({"word":w,"freq":freq})
    return ret


#texts=list(map(lambda x:x.text,res))

#res=make_docmat(texts,"sss")
res=make_docmat(df.name+" "+df.description,"countssss")

from sklearn.decomposition import LatentDirichletAllocation
lda = LatentDirichletAllocation(n_components=20)
lda.fit(res.docmat)
topic=np.argmax(lda.transform(res.docmat),axis=1)

for i in range(len(lda.components_)):
    tmp=lda.components_[i]
    idx=tmp.argsort()[::-1][:20]
    print(np.array(res.docmat.columns[idx]))

#sorted(vocab_freq.items(), key=lambda x:x[0],reverse=True)
import pandas as pd
pd.set_option('display.max_rows',500)
tdf=pd.concat([df,pd.DataFrame({"topic":topic})],axis=1)

tdf=tdf.sort_values("topic")
tdf.to_csv("/Users/satoshi/Desktop/prof_topic.csv")


```