Pythonでテキストアナリティクス　 〜『テキストアナリティクス入門』に沿い共起ネットワークなど描いてみた〜

**2022/08/12追記**
- GoogleColabにおいてGINZAインストール後に必要となる再起動を不要にするおまじないを追加。


## はじめに
**[テキストアナリティクス入門](www.amazon.co.jp/dp/4065274109)**
![テキストアナリティクス](https://www.hanmoto.com/bd/img/9784065274101.jpg?2022-03-11T16%3A10%3A21%2B09%3A00)

この書籍は、テキストアナリティクス初学者向けの入門書です。
テキストアナリティクスとは何だということのみならず、頻出語やこれを表現したWordCloud、共起ネットワークをどのように活用すべきかが、実例に沿ってわかりやすく解説されていて、とても参考になりました。

この書籍に**インタラクティブな動的共起ネットワーク**が紹介されていました。
インタラクティブで、見た目もよく、可読性も高そうなので、とにかく実行してみたくなり、WordCloudなど他に紹介されていたことを含め、早速やってみました。
書籍のデータやコードを転用・転載することはできませんが、Google Colab で実行するためのフォローと、Chrome拡張機能のついすぽでエクスポートしたTwitterデータ（csv）での実施例をアップしたいと思います。



## 実行したこと
>- Google Colabで実行する
>- Twitterデータ（csv）を読込み、つぶやきの頻出語（上位）をグラフ化
>- WordCloud 生成（前回記事参照）
>- 共起ネットワーク 生成
>- 気になる共起関係について原文確認、気になる表記に対する原文確認


## Google Colabでの実行のフォロー
- GINZA、Sudachi、ja-ginza、pyvisや日本語フォントをpipインストールする必要があります。

```Python:GINZA,Sudachi,ja-ginzaインストール
!pip install SudachiPy==0.6.6 ginza==5.1.1 ja-ginza==5.1.0
```

```Python:GINZAインストール後再起動を不要にするおまじない
import pkg_resources, imp
imp.reload(pkg_resources)
```

```Python:pyvisインストール
!pip install pyvis
```

```Python:日本語フォント
!apt-get -y install fonts-ipafont-gothic
```

```Python:matplotlib日本語化
!pip install japanize-matplotlib
```


　
## Twitterデータでの試行
「再エネ」でtweet検索したをつぶやきを ついすぽ でcsvにエクスポートしたデータで試行してみました。

https://chrome.google.com/webstore/detail/ついすぽ-tweet-export/imjojcgefiinokaclmifakpphkfeiddg?hl=ja

エクスポートしたcsvは「テキスト」という名のカラムが “つぶやき” データとなっていましたので、
csv → データフレーム(df) → df[‘テキスト’] の形態素解析 を実行し、頻出語をグラフ表示しました。

初回実行では、頻出語上位に 表示された不要語をstopwords に設定し、再実行すると以下のグラフが得られました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/b30a5cfc-feb8-35d1-d02a-2ec828fcbf06.png)
再、エネ、発電、電力、エネルギー、原発、太陽光発電、破壊、開発。。。　CO2削減が迫られるなか、既存エネルギーか再生可能エネルギーか、破壊か開発か、変化渦中の葛藤や悩みが垣間見えます。

## 固有表現抽出
固有表現の抽出は、GINZAを活用する価値のひとつと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/0adc375f-9394-a8a9-d0d6-7ae8e8fe2a7d.png)
※Google colabで上記の固有表現のラベル表示させるためには、以下のコードで「jupyter=True」を与えてやらないといけません。

```Python:
displacy.render(doc,style='ent',jupyter=True)
```

## WordCloud生成
次にWordCloudを描きました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/da57f106-eab3-a84d-9c98-89a60042b926.png)
再、エネ、電力、発電が突出して見えます。
- SDGs、環境、脱炭素、再生、破壊など、環境が意識された単語
- 太陽光発電、風力、水素など、再生可能エネルギーがイメージできる単語
- 値上げ、賦課金、電気料金、電気代、価格、所得、お金、料金、高いなど、負担に関する単語
が目に止まりました。

突出していた再、エネ、電力、発電からは、環境に対する意識や関連をイメージしましたが、どちらかといえば、負担に対する不安や不満が色濃く見えました。


## 共起ネットワーク
次に、共起ネットワーク を描きました。
書籍のプログラムは、静的な共起ネットワークと動的な共起ネットワークを描くものとなっていました。
以下は静的な共起ネットワークです。すこし見づらいかな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/e157038d-fea9-c32f-bc4e-7e6c82721ee8.png)

以下が動的な共起ネットワークです。
Google Colabでは、Notebook上で描くことはできませんでしたが、html出力した共起ネットワークをウェブブラウザで見ることができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/2bff87a5-7742-835b-07c3-9a8e717483bf.png)
pyvisでは、html出力の前に「show_buttons()」という指示を与えると各種ボタンを表示してくれます。
上記はこの各種ボタンを反映させたものです。
添付の共起ネットワークは、nodesのfont「size:」を適当なサイズに変更し、physicsの「solver:」を「forceAtlas2Based」に設定したものです。
なお、「show_buttons(filter_=['physics', 'nodes'])」とすると 表示を限定することができます。 

## 2つのKeywordが共起する原文の確認
上記までの確認で、「反対」と「発電」の共起が気になりましたので、原文検索してみました。

>**■Keyword1＆2 sentences pickup**
>	✓ 青森県知事、八甲田周辺の風力発電事業(連峰の尾根約100kmにMAX高さ200mの風車を150基)に反対表明「再生可能エネルギーなら何をやってもいいのか」
>	✓ #風力発電建設反対
>	✓ しかし、「地元としては素直に喜べない心境です、関電よりも大規模な風力発電事業が止められなければ本当の意味で宮城の再エネ運動の勝利ではありません」#風力発電建設反対https://t.co/9Ag4Ety6Fn
>	✓ #風力発電建設反対
>	✓ #風力発電建設反対#
>	✓ 全国で風力発電の建設計画が急増する一方、環境保護等の観点から反対に遭うケースが相次いでいる。
>	✓ ほぼ時を同じくして27日、福島県の国有林内内で最大40基の風力発電を設置する計画が、地元の反対により中止が検討されているとの報道も出ている(福島民友)。
>	✓ 洋上風力発電に絶対反対推進主体は国土交通省であり国土交通大臣職を公明党が手放さない訳国土交通省が親中政党に牛耳られていることは国益を大きく損ねることに直結していることを国会議員は知るべきだhttps://t.co/9bNsGqSfRN
>	✓ 村長や町長が白紙撤回を求める　昭和村・南会津町#風力発電建設反対https://t.co/

原発を反対したものかと思いきや、風力発電の建設に反対するという内容でした。
再エネ調達のむつかしさを物語る一つの側面を見た気がしました。

## 気になる表現の原文検索
書籍では、正規表現を利用した原文検索の方法も紹介されていました。
「再エネ賦課金」と「新電力」について原文検索してみました。

>**●　再エネ賦課金 が含まれる文を抽出した結果（部分抜粋）**
>	✓ 急激に進んだ円安背景に、値上げは2万品目、最大28%の値上げ／ネット「再エネ賦課金やめてくれ！」
>	✓ 残り１００万円は再エネ賦課金や電気料金として一般国民が負担」「莫大な補助を受け太陽光が導入され、火力発電の稼働率が下がり休廃止し、電力不足が状態化」と、杉山大志氏は太陽光発電はもう要らない！
>	✓ 凍結・再エネ賦課金・消費税
>	✓ 太陽光発電は、無駄の産物そんなものに国民から強制的に徴収した「再エネ賦課金」と補助金の二階建てで、支援している愚の骨頂
>	✓ 「物価高対策」の一つとしてソーラーパネルの建設を中止し「再エネ賦課金」を削除すべき。
>	✓ 再エネ議連解散と、再エネ賦課金廃止を！
>	✓ それはね、民主党時代に動いた再エネ賦課金のこと正してから言ってくださいね。
>	✓ 再エネ賦課金むかつく〜💢
>	✓ トリガー条項凍結解除、再エネ賦課金停止（廃止してほしい）含む公約の実現
>	✓ 新電力なんて足手纏いは、全部無くして再エネ賦課金も無くしたら、国民負担がグンッと減って、良いと思うわ❣️😆🙏✨🎌
>	✓ 消費税ゼロガソリン税ゼロ再エネ賦課金ゼロ社会保険料半額現金
>	✓ 再エネ賦課金ってのは正に「政策の失敗を国民達が支払い続けているお金」だわな💢

>**●　新電力 が含まれる文を抽出した結果**
>	✓ 新電力なんて足手纏いは、全部無くして再エネ賦課金も無くしたら、国民負担がグンッと減って、良いと思うわ❣️😆🙏✨🎌
>	✓ 広がり欠く「節電ポイント」、新電力の参加進まず　
>	✓ 大手電力会社は再エネ新電力潰しのうえに、家庭用電気料金の上限の撤廃が相次ぐ。
>	✓ 新電力各社の料金改定・事業撤退～実質100%
>	✓ 再エネ新電力が倒産のピンチ！
>	✓ 新電力各社の料金改定・事業撤退～実質100%
>	✓ 「再エネ新電力が倒産のピンチ！


「再エネ賦課金」に関する意見は、負担に対する不満や怒りであふれていました。
「新電力」の方は、現在の危機的状況に対する不安がにじんだ内容となっていました。


## 最後に
**[テキストアナリティクス入門](www.amazon.co.jp/dp/4065274109)** で紹介されている手法は、いろんな方がネットでも紹介されていますので、見よう見まねでWordCloudも共起ネットワークも描くことはできます。
ただ、私はこの書籍を読んで、テキストアナリティクスにおいてこれらとどう向き合うかということを十分に理解していなかったことに気がつきました。

WordCloudも共起ネットワークも描いておしまいではなく、原文との行き来が大切なんだなということをあらためて感じさせてくれる機会を与えてくれた **[テキストアナリティクス入門](www.amazon.co.jp/dp/4065274109)** に、あらためて感謝したいと思います。

これからテキストアナリティクスやるぞ！という方に、**[テキストアナリティクス入門](www.amazon.co.jp/dp/4065274109)** はおすすめです。


## 参考

https://cpp-learning.com/pyvis/

https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5Data-Science%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-Python%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E5%85%A5%E9%96%80-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E5%89%9B%E5%8F%B2/dp/4065274109/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=&sr=