共起ネットワークを作ってみたの時間


# 目次
[1.はじめに](#1-はじめに)
[2.共起ネットワークとは](#2-共起ネットワークとは)
[3.KH Coder](#3-kh-coder)
[4.職種ごとの共起ネットワーク](#4-職種ごとの共起ネットワーク) 
[5.おわりに](#5-おわりに)

# 1. はじめに
この記事は、データを活用したアルゴリズムの開発や企画の立案などの課題がコンペティション形式で出題される **[SIGNATE Competetion](https://signate.jp/)**  に関する記事になります。

<br>

----

### こんな方には是非この記事を読んで貰いたい！


・[SIGNATE Student Cup 2022： データサイエンティストの職種判別チャレンジ！！](https://signate.jp/competitions/724) に挑戦する方

・共起ネットワークについて知りたい方

----

## 挑戦するコンペの紹介
今回挑戦するSIGNATEコンペティションは
[SIGNATE Student Cup 2022： データサイエンティストの職種判別チャレンジ！！](https://signate.jp/competitions/724)
になります。

**概要** 
・英語圏の求人情報に含まれるテキストデータ（職務内容に関する記述）をもとに、その職種内容が以下のどの職種に該当するかを判別するアルゴリズムを構築する。

-職種一覧-
①データサイエンティスト（DS）
②機械学習エンジニア（ML Engineer）
③ソフトウェアエンジニア（Software Engineer）
④コンサルタント（Consultant）

## ずばり、今回やりたいこと
 職種ごとの求人情報で**共起ネットワーク** を作成したい！

# 2. 共起ネットワークとは
共起ネットワークとは、抽出した単語を用いて、出現パターンの似通ったものを線で結んだ図のことを言います。

たとえば、夏目漱石の小説『こころ』に出てくる単語を抽出し、共起ネットワークを作成すると、


<img width="700" alt="共起ネットワークこころ画像.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/03fd9f81-032b-b9bb-df80-74abae4745a9.png">

このようになります。

出現回数が多い単語ほど大きく表示され、
また共起の程度が強いほど太い線で描画されています。

つまり、今回の『こころ』の共起ネットワークの例でいうと、
物語の重要な登場人物である「先生」「K」等の単語が多く使われていることが分かります。

また、「父」「母」「兄」の単語には共起が見られ、また「父」と「病気」という単語にも共起が見られます。

実際小説中では父は病気で亡くなっており、母は父の看病をしていたと描かれています。

このように**共起ネットワーク** を作成することで、単語の頻出度とその関係性を推測することができます。


# 3. KH Coder

共起ネットワークを簡単に作ることができる **[「KH Coder」](https://khcoder.net/)** というフリーソフトウェアがあります。

KH Coderとは、軽量テキスト分析やテキストマイニングのためのフリーソフトウェアです。

Windows向けソフトウェアは、フリー版のダウンロードが[こちらのサイト](https://khcoder.net/dl3.htmlv)から可能です。
Mac向けソフトウェアは有償になりますが、ソースコードは無料公開されています。
分かりやすいマニュアルやチュートリアルもありますので、気軽に扱えるソフトウェアになっていると思います。

今回、このKH Coderを用いて、コンペに出てくる求人情報の共起ネットワークを職種ごとに作成してみたいと思います。

# 4. 職種ごとの共起ネットワーク

学習用データ（train.csv)のdescriptionに書かれている文をもとに共起ネットワークを作成しました。
元データにはhtmlタグがいくつかあったので、前処理としてそれらを消去し、その後KH Coderを使って職種ごとの共起ネットワークを作成してみました。

その結果がこちらです。

### ①データサイエンティスト（DS）
<img width="700" alt="1_DS共起ネットワーク画像.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/f7284394-652f-db96-f486-5e7968487ef9.png">

中心に大きくでている単語は"business"。またそれに関連して出てくる"analysis"、"insight"等、データサイエンティストならではの単語がよく使われていることが見て取れます。



---
### ②機械学習エンジニア（ML Engineer）
<img width="700" alt="2_ML共起ネットワーク画像.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/10becae4-fbbe-e4a0-1e4a-60ce7ef6a581.png">

機械学習を意味する"ML"や"AI"等の独特のワードが見られました。
また、①のデータサイエンティストと比較して、"system-development"や"maintain-performance"等の分析だけでなくシステムを構築するような単語が出現するのも特徴の1つでしょうか。




---
### ③ソフトウェアエンジニア（Software Engineer）
<img width="700" alt="3_SE共起ネットワーク画像.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/0d400bb6-8940-4fa3-c3b4-71a21c27bae8.png">

やはり、特徴的な単語として、"web-application"や"system-design"等があるようです。
また大きく"team-work"、"team-work"等の共起も見られます。ソフトウェアエンジニアはよりチームとして成果を出すことが求められているのかもしれません。


---
### ④コンサルタント（Consultant）
<img width="700" alt="4_Co共起ネットワーク画像.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/fa196951-9916-60fd-1c84-f3340705725f.png">

中心上部に大きく"Customer"との単語が見られます。コンサルタントはやはり顧客との関係性が重要そうです。
"Customer-requirement-solution"や"plan-implementation"はコンサルタントの特徴を表しているでしょう。

# 5. おわりに
今回KH Coderを使って共起ネットワークを作成してみました。
単語の頻出度や関係性が可視化できたので、これらが分析予測に役立てば幸いです。

今回のSIGNATEコンペティションに参加する方は共に頑張りましょう！