医療職からデータサイエンティストへスマートフォン用の表示で見る医療職からデータサイエンティストへ統計学、機械学習に関する記事をまとめています。文字列を対象したデータマイニング手法で、単語の出現頻度、出現タイミングなどを集計する簡単なものから、機械学習を用いてクラス分類する高度なものまで様々な解析手法があります。中でも、単語の出現頻度をわかりやすく可視化するワードクラウドと、どの単語と一緒に出現しやすいかを調べる共起語、それを可視化する共起ネットワークを使って、私自身のtweetを解析したいと思います。今回は以下の2冊を参考にしています。行うための有名なパッケージには{RMeCab}があります。こちらは、あらかじめお使いのPCにインストールする必要があります。こちらから指示にしたがってインストールしてください。rmecabインストール後Rを立ち上げて、こんな感じになれば成功です。RMeCabC("今回はテキストマイニングの記事です。Tweetの読み込み{RMecab}の次はTweetを読み込むためのパッケージ{rtweet}をインストールしておきます。以前はTwitterのAPI設定などが必要でしたが、この{rtweet}はそんなものは必要なく、簡単にTweetを取得できます。twitterのアプリ自体の登録は必要で、初めて使うときには連携の承認を求められます。Twitterを利用されていない方は、今回のデータcsvをこちらに置いておきますので、使ってみてください。※日々tweetしていますので、{rtweet}を使う方は本記事と結果が異なることをご了承ください。"の文字が入る最新tweet100件を取得してみました。取得できる情報には、時刻やtweet内容だけでなく、いいねの数や発信場所なども取得できます。{rtweet}には他にも様々な機能があるので、興味ある方は是非調べてみてください。経度緯度を指定して、特定の地域のtweetを取得できたりもします。Tweetのテキストから、余分な文字などを消していきます。するための関数がいくつかありますが、今回はその中の二つを紹介します。データフレーム内のテキストを品詞分解してくれるRMeCabDF{RMeCab}です。"の"RMeCabDF{RMeCab}では、データフレームを渡して、テキストのあるカラムを指定します。注意点としては、tibble型だとうまく変換できないので、通常のデータフレーム型に変換する必要があります。結果は各行ごとに品詞分解を行ったリストで返ってくるので、集計の際はunlist{base}を使ってくだいさいね。このまま解析を進めてもいいのですが、RMeCabDF{RMeCab}は実行速度が遅いのもあり、これは紹介に留めてもう一つの関数RMeCabFreq{RMeCab}を使って解析を行っていきます。RMeCabFreq{RMeCab}は品詞分解だけでなく、頻度の集計まで行ってくれます。データフレームの形ではなく、ファイルを渡す必要があるので、解析前には一手間必要です。write(file=temp)これで準備完了です。あとはこのtempをRMeCabFreq{RMeCab}に渡します。4結果はデータフレームで返ってきて、品詞分解後の単語(Term)、品詞(Info1)、品詞のさらに細かい分類(Info2)、頻度(Freq)がカラムとなります。ここから、名詞と形容詞のみを抜き出し、出現頻度Top20をグラフにしてみましょう。element_blank())単語頻度は"データ"が一番多くなっており、Top20には名詞しかないようです。さあ、いよいよこれをワードクラウドにしていきます。ワードクラウドとは説明するよりも見た方が早いので、早速作ってみましょう。ワードクラウド作成には{wordcloud2}を使います。ワードクラウドはこのように、出現頻度の多い単語が大きく表示されます。みて"データ"、"サイエンティスト"、"分布"、"解析"などの単語が多いことがわかりますね。指定できる引数には様々なものがありますが、今回は形を丸、サイズは0.5、色は"random-dark"としてあります。サイズを大きくしすぎると最頻値の単語が大きすぎて入りきらずに表示されないことがあるため注意してください。共起語、n-gram頻度を調べたら、今度はどんな単語と一緒に使われているのか、単語同士の前後関係を調べることができれば、さらに深い解析ができそうです。これをn-gram、または共起語と呼びます。(厳密にはこの二つは意味が少し異なります。)共起語を調べるにはcollacate{RMeCab}を使います。こちらもファイル形式で渡す必要があるので、先ほどのtempを使いましょう。1collacate{RMeCab}は調べたい単語と調べる前後関係の範囲を指定します。結果の見方は、5単語以内を範囲とすると、AIという単語は"データ"という単語の後に1回現れているという意味になります。Information(MI)などを使うことがあります。2.442345とします。詳しくは参考書をご覧ください。共起ネットワークさて、先ほどは一単語のみを選んで、共起語を調べましたが、今度は全ての単語で共起語を調べてみましょう。NgramDF{RMeCab}を使います。関数にはファイルを渡し、引数にはtypeで文字(0)、単語(1)、品詞(3)のどのタイプの共起語か、Nで何個の共起語か、posでどの品詞かを指定します。17共起語には"医療"と"職"が最頻で49回となっています。これをわかりやすく可視化してみましょう。パッケージは{igraph}を使います。{igraph}の詳しい使い方は以下がわかりやすいです。Rとigraphを使ったネットワーク解析と可視化やってみます。vertex.label.dist=0)#ノードとラベルとの距離おお!単語や形容詞同士の繋がりがわかりやすくなりました。これで単語間の関係性を見ることができます。手法、ワードクラウド、n-gram、共起ネットワークを紹介しました。テキストマイニングはとっつきにくそうで、以外に簡単にできてしまうので、是非とも入門として本記事を参考にしてみてください。※本記事は筆者が個人的に学んだことをまとめた記事なります。所属する組織の意見・見解とは無関係です。数学の記法や詳細な理論、用語等で誤りがあった際はご指摘頂けると幸いです。手法が網羅されています。始めたいと思ったら、まず目を通してみることをお勧めします。はてなブログPro大学院で疫学統計を学んでいます。データサイエンティストを目指して、初心者目線から統計学、機械学習など学んだことをまとめていきます。パッケージ{prophet}を使って、ブログアクセス数を予測する。medi_data0826スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。