Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#経済学のための実践的データ分析 4.10 テキスト分析(後半)

yasushihara
December 18, 2019

#経済学のための実践的データ分析 4.10 テキスト分析(後半)

#経済学のための実践的データ分析
4.10 テキスト分析(後半; 補講)

一橋大学大学院経済学研究科
原泰史
[email protected]

yasushihara

December 18, 2019
Tweet

More Decks by yasushihara

Other Decks in Education

Transcript

  1. 今年残りの予定 • 12/9; 企業データベース+RESAS • 12/12; Linked Open Data •

    12/16; テキスト分析(その1) • 12/18(水曜); テキスト分析(その2; 補講) 38番教室 • 12/19; データの可視化 • ゲストあり〼 • 12/21; 一橋大学講座 • 12/22-29; イスラエル出張
  2. ケーススタディ2: 小室さんと華原さんのトークを分析してみよ う • TK MUSIC CRAMP • 1995年から1998年まで放送してた音楽番組 •

    1995年度は小室哲哉さんが • 1996年度はSMAPの中居正広さんが • 1997年度は華原朋美さんが司会を担当 • 二人の会話を共起グラフ分析して、二人がどのくらいラブラブ だったのか、どのくらい冷めちゃったのか可視化できるかやっ てみよう • 分析対象 • 1996/3/6 オンエアのトーク • 1998/3/25 オンエアのトーク 3/8/2015 5
  3. 結果 • 1996/3/6 OA 版 • 1998/3/25 OA 版 3/8/2015

    6 ※. 動詞, 名詞, 形容詞を抽出
  4. 結果(2) : 頻出語のみに限定 • 1996/3/6 OA版 • 1998/3/25 OA 版

    3/8/2015 7 ※. 動詞, 名詞, 形容詞を抽出
  5. 利用する Notebook • Jupyter Notebook • https://www.dropbox.com/s/xw8sltq0kp4 ey2g/Twitter%20API%20%E3%81%8B%E3 %82%89%E5%A4%A7%E5%AD%A6%E3%8 1%AB%E9%96%A2%E4%BF%82%E3%81%

    99%E3%82%8B%E3%81%A4%E3%81%B6 %E3%82%84%E3%81%8D%E3%82%92%E 5%8F%96%E5%BE%97%E3%81%97%E3% 81%A6%2C%20WordCloud%20%E3%82%9 2%E4%BD%9C%E3%82%8B.ipynb?dl=0
  6. b. Twitter の API キーを取得する • Access Token & access

    token secret の Create をクリックする
  7. d. ハッシュタグに基づきデータを取得す る • 利用するパッケージ (tweepyと datetime) をインポートする • b.

    の作業で取得した Consumer_key, Consumer_secret, Access_token, Access_secret を 指定する • 検索キーワードを変数として格 納する • ツイートを取得する 参考; https://qiita.com/kngsym2018/items/3719f8da1f129793257c
  8. Tips; データが使える/使えないSNS • Mixi • Mixi graph api; http://developer.mixi.co.jp/conn ect/mixi_graph_api/

    • Twitter • API でデータを取得可能, 過去デー タに関しては要課金 • Instagram • API 提供, 審査あり; • https://developers.facebook.com /docs/instagram-api • Facebook • Graph API; https://developers.facebook.com /docs/graph-api?locale=ja_JP • スクレイピングは全面的に禁止; https://www.octoparse.jp/blog/5 -things-you-need-to-know- before-scraping-data-from- facebook/ • Tiktok • Unofficial API は発見; https://github.com/szdc/tiktok- api
  9. やること 1. KHCoder をインストールする 2. Dbpedia.org から SPARQL Endpoint 経由でデータセットを取得する

    • 前回の内容 3. Manaba からデータセットをダウンロードする 4. KHCoder に定点調査の自由記述データを読み込む 5. データ分析前の処理をする 6. 頻出語の取り出しを行う 7. 共起ネットワークを書く 8. 属性情報ごとの特徴を抽出する 9. 対応分析を行う 2019/12/17 39
  10. 1. KHCoder をインストールする • KHCoder とは? • テキスト型データの計量的な内容分析(計量 テキスト分析)もしくはテキストマイニング のためのフリーソフトウェアである。各種の

    検索を行えるほか、どんな言葉が多く出現し ていたのかを頻度表から見ることができる。 さらに多変量解析によって、一緒に出現する ことが多い言葉のグループや、同じ言葉を含 む文書のグループを見ることで、データ中に 含まれるコンセプトを探索できる。 • また一部の文書群に注目した場合に、その文 書群に特に多く出現する言葉をリストアップ することで、その文書群の特徴を探索できる。 あるいは分析者が指定した基準によって、文 書の分類を自動的に行うこともできる。 • 引用: https://ja.wikipedia.org/wiki/KH_Coder 2019/12/17 40
  11. 1. Khcoder をインストールする • Tips: Mac な場合 • かなりめんどくさい •

    Perl やR の個別パッケージの導 入が必要 • 有償版のインストールパッケー ジが提供されている. • https://khcoder.stores.jp/#!/it ems/536a53268a56108414000 1dd 2019/12/17 45
  12. 2. Dbpedia.org から SPARQL Endpoint 経 由でデータセットを取得する • 前回の講義で説明した Dbpedia.org

    の SPARQL Endpoint から, 東証一部, 東証二部, およびマザーズの企業名とその企業概要を 取得する • 日経NEEDS などに採録されたオフィシャルなデータではなくて、 Wikipedia で執筆された企業の「紹介文」 2019/12/17 46
  13. 2. Dbpedia.org から SPARQL Endpoint 経 由でデータセットを取得する • Jupyter Notebook

    で以下のように記述する (詳しくは前回配布 した notebook を参照のこと)
  14. 2. Dbpedia.org から SPARQL Endpoint 経 由でデータセットを取得する • 同様の作業を, 東証一部と東証二部で繰り返す

    #東証マザーズ上場企業の情報を取得する sparql2 = SPARQLWrapper(endpoint='http://ja.dbpedia.org/sparql', returnFormat='json') sparql2.setQuery(""" PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> select distinct ?name ?abstract where { ?company <http://dbpedia.org/ontology/wikiPageWikiLink> <http://ja.dbpedia.org/resource/Category:東証マザーズ上場企業> . ?company rdfs:label ?name . ?company <http://dbpedia.org/ontology/abstract> ?abstract . } """) results2 = sparql2.query().convert()
  15. 3. KHCoder にデータを読み込む • データ • 東証一部/東証二部/マザーズ: • https://www.dropbox.com/s/9jtwyxw4ae3nntz/%E6%9D%B1%E8%A8%BC%E4%B 8%80%E9%83%A8%E6%9D%B1%E8%A8%BC%E4%BA%8C%E9%83%A8%E3%83%9

    E%E3%82%B6%E3%83%BC%E3%82%BA.xlsx?dl=0 • 経済学者/経営学者/社会学者: • https://www.dropbox.com/s/jmvz8fv25aqecsj/%E6%97%A5%E6%9C%AC%E3%81 %AE%E7%B5%8C%E6%B8%88%E7%B5%8C%E5%96%B6%E7%A4%BE%E4%BC%9 A%E6%B3%95%E5%AD%A6%E8%80%85%E4%B8%80%E8%A6%A7.xlsx?dl=0 • ヒップホップ/ロック/フォークグループ: • https://www.dropbox.com/s/5iye8puor1eg52r/%E6%97%A5%E6%9C%AC%E3%81 %AE%E3%83%92%E3%83%83%E3%83%97%E3%83%9B%E3%83%83%E3%83%97% E3%83%AD%E3%83%83%E3%82%AF%E3%83%95%E3%82%A9%E3%83%BC%E3% 82%AF%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97.xlsx?dl=0 2019/12/17 51
  16. 5. 頻出語の取り出しを行う • “抽出語リストの形式” • 品詞別 • “記入する数値” • 出現回数(TF)

    • “出力するファイルの形式” • Excel (*.xlsx) を選択し, OK をクリックする 2019/12/17 62
  17. 6. ストップワードの設定 • Force ignore “使用しない語の指定” にス トップワードを指定する • 株式会社

    • 本社 • 会社 • 企業 • LTD. • CO., • CORPORATION • INC. • ょ • CO.,LTD. • HOLDINGS • THE • ELECTRIC • コーポレート など….
  18. 6.共起ネットワークを書く • 共起では, ある特定の タームで共に出てくる語 の確認ができる • 東証一部と東証二部とマ ザーズでは企業が取り組 んでいることが違う

    • マザーズはインターネッ ト系, 東証二部は自動車や 食品, 東証一部は持ち株な どのタームが出ている 2019/12/17 70
  19. 9. マッチングルールを作成する • 特定の語のグループを作成し, それらでグルーピングするこ とで特徴を抽出する • 今回の場合, 自動車産業, 電気

    産業, 銀行, ICT など産業分類 ごとにグルーピングする • 記述方法 *グループ名1 みかん or いちご or りんご *グループ名2 ごりら or らっこ or こんどる *グループ名3 るびー or びーどる
  20. 今日の実習; その1 (windows ユーザ向け) • アップロードされている • (1) 東証一部/二部/マザーズの 企業概要データ

    • (2)日本の経済/経営/社会/法学 者の概要データ • (3)日本のロック/ヒップホップ /フォークグループの概要デー タ を用いて, テキスト分析を行う • 語句の抽出 • 共起ネットワーク • 対応分析 • 多次元尺度構成法 • コーディングルールの設定 などを行い解析すること
  21. 5. 感情分析 • Ekman and Friesen (1971) • 表情の研究を通じ, 感情表現には普遍的

    な6つの感情 (怒り, 嫌悪, 恐怖, 喜び, 悲 しみ, 驚き) があることを示す. • ただし, 西洋文化圏と東洋文化圏では表 情の表出に違いがある. • 参照 • 日本人の基本6感情の表情は「エクマン理 論」に従うか? – 人工知能を用いて検証 • https://academist- cf.com/journal/?p=10185 • https://ocw.mit.edu/courses/brain-and- cognitive-sciences/9-00sc-introduction- to-psychology-fall-2011/emotion- motivation/discussion-emotion/ © Paul Ekman. All rights reserved.
  22. 5. 感情分析 • git から sentiment_ja パッ ケージを取得する • https://github.com/sugiyam

    ath/sentiment_ja • 展開したディレクトリ (sentiment_ja) に移動する
  23. 5. 感情分析 • 出力結果 • [{'sentence': '三田でラーメン二郎の本店でヤサイカラメアブラマシマ シの二郎を食べるのは素晴らしい', 'emotions': {'happy':

    '7.0', 'sad': '1.0', 'disgust': '1.0', 'angry': '1.0', 'fear': '1.0', 'surprise': '12.0'}}, {'sentence': '行列は切ない', 'emotions': {'happy': '1.0', 'sad': '8.0', 'disgust': '5.0', 'angry': '3.0', 'fear': '1.0', 'surprise': '1.0’}}] • Happy, sad, disgust, angry, fear, surprise で分類される
  24. 参考文献 • pythonでgensimを使ってトピックモデル(LDA)を行う • https://paper.hatenadiary.jp/entry/2016/11/06/212149 • 「OK word2vec ! "マジ卍"の意味を教えて」

    Pythonで word2vec実践してみた • https://www.randpy.tokyo/entry/python_word2vec • models.word2vec – Word2vec embeddings • https://radimrehurek.com/gensim/models/word2vec.html • 15分でできる日本語Word2Vec • https://qiita.com/makaishi2/items/63b7986f6da93dc55edd
  25. 参考文献(2) • Pythonで文字列を分割(区切り文字、改行、正規表現、文字 数) • https://note.nkmk.me/python-split-rsplit-splitlines-re/ • WindowsでNEologd辞書を比較的簡単に入れる方法 • https://qiita.com/zincjp/items/c61c441426b9482b5a48

    • Windows 10 64bit で python + Mecab • https://qiita.com/kuro_hane/items/64e39d5deeb3f876b421 • Windows10(64bit)/Python3.6でmecab-python環境構築 • http://blog.livedoor.jp/oyajieng_memo/archives/1777479.html
  26. 参考文献(3) • MeCab: Yet Another Part-of-Speech and Morphological Analyzer •

    https://taku910.github.io/mecab • mecab-ipadic-NEologd : Neologism dictionary for MeCab • https://github.com/neologd/mecab-ipadic-neologd • Word2Vecを用いた類義語の抽出が上手く行ったので、分析を まとめてみた • https://qiita.com/To_Murakami/items/cc225e7c9cd9c0ab641e • 自然言語処理による文書分類の基礎の基礎、トピックモデルを 学ぶ • https://qiita.com/icoxfog417/items/7c944cb29dd7cdf5e2b1
  27. 成績評価(1) • 平常レポート (40パーセント; 必須) • 講義計画に示したように、複数の回で学生にはレポートを課します。 レポートは Word/PowerPoint形式のメールあるいは, github

    経由で の提出が求められます(どの方法を採用するかは、初回の講義で決定し ます)。 • レポートには、(A.) 利用したデータセットとその内容, (B.) 分析の問 い, (C.) 分析手法, (D.) 分析結果 を明記する必要があります。ページ 数や文字数は問いませんが, これらの内容が含まれており, 講義中にア ナウンスする評価手法を満たす場合, 高い得点を得ることが出来ます。 • 平常点 (10パーセント) • 本講義は実習が多く含まれており, また取り扱うデータセットや内容も 多彩です。そのため、受講者同士が協力する必要があります。こうし た受講者の態度を評価するために、平常点を設けます。
  28. 成績評価(2) • 最終レポート (40パーセント; 必須) • 講義の最終回では最終レポートの報告会を行います。受講者は3名から4名か ら構成されるグループで、最終レポートの報告を行う必要があります(人数は 受講者の人数により変更される可能性があります)。最終レポートでは、プレ ゼンテーションの方法を学生は自由に選ぶことが出来ます。PowerPoint

    以 外にも、Prezi などのアクティブプレゼンテーションツールや、他のプレゼ ンテーション手法を用いることが出来ます(プレゼンテーションツールについ ては、必要であれば講義内で説明する機会を設けます)。最終レポートでは、 以下の点について評価を行います。 (A.) グループ内の役割分担 (B.) データセットのユニークさおよび、それが適切に処理されているか (C.) 分析手法のユニークさおよび、それが適切に解析されているか (D.) プレゼンテーションのユニークさ (E.) 質疑応答にうまくリプライすることが出来ているか • 最終レポートの360°グループ評価 (10パーセント) • 3. の最終レポートについて、グループの自己評価および他のグループからの 評価を行います。3. で挙げた評価ポイントに基づき、グループメンバーおよ び他のグループは評価を行います。
  29. Withdraw について • レポートを一回も提出していない場合 • Withdraw として扱います • レポートを1回提出している場合 •

    Withdraw ではなく、単位取得の意思があるとみなします • レポート1回目提出後単位取得に進まない場合には, 12/27 10:45 (JST) までにSlack DM にてその旨おしらせください
  30. 13. まとめと最終報告レポート • テーマ • 「◦◦のための実践的データ分析」 • 卒論や修論や博論の作成の入り口になるような、データの調達とその データの解析を, 講義で取り上げたデータセットおよび分析手法で実施

    する • 分析単位はマクロ (国レベル) でもメソ (企業/産業レベル) でもミクロ (個人レベル) でも問いません • 利用できるデータセット • 特に制限なし • 利用できるツール • Tableau, Excel, SQL, Jupyternotebook (Python), R など, 特に制限なし
  31. 13. まとめと最終報告レポート • 評価方法 • グループ内での自己評価 • グループ外からの評価 アンケートシステムをManaba or

    Google Docs で用意します。 • 評価基準 • (A.) グループ内の役割分担 (B.) データセットのユニークさおよび、それが適切に処理されているか (C.) 分析手法のユニークさおよび、それが適切に解析されているか (D.) プレゼンテーションのユニークさ (E.) 質疑応答にうまくリプライすることが出来ているか • 納品物 • プレゼンテーションに利用したSlack グループにアップロードすること
  32. グループ分け(1) • グループα • 2116157u • 2116205a • 2117044k •

    2117102m • グループβ • 2115096s • 2117156k • 2118025h • 2118091b • 2117003u • グループγ • 2113015y • 2116260h • 2117124s • 2117222s • 2117223k • グループμ • 1118077h • 1117199m • 1117044b • 1118051z • 1118256h • グループδ • 2117119z • 2117198z • 2118059x • 2118149u • 2118084y • グループε • 2116015m • 2115018k • 2116221c • 2117092k • 2117232h