1-はじめに
このブログはAidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開しています。
Aidemyの自然言語処理講座を9ヶ月で学んでいる@marieishiです。
受講している講座は3ヶ月コース、6ヶ月コース〜と選べたのですが、私は子育ての側ら学習時間を安定して確保できる自信がなかったので、かなり余裕を持たせた9ヶ月間コースを選択しました。
プログラミングは未経験ですが、パソコンひとつで世界のどこからでも仕事ができそうなノマドのイメージに憧れ、前々からこの世界に興味がありました。
現在は英会話スクールで講師をやっています。勤務先でもプログラミングを取り入れたカリキュラムも扱っていて、私もスキルを身につけておけば何かの役に立てるのではと思い受講を決めました。
受講開始前は1日3時間という計画を立てましたが、やっぱり子育てをしながらの受講は予想通り学習時間の確保に苦労しました。カウンセリングも子どもの寝かしつけが終わってから利用するつもりでしたが、結局自分も一緒に朝まで寝てしまうので、ほぼ独学でした。
さらに、受講開始直後の「よし、やるぞー!」もピークを迎え、何週間かパソコンすら開かない時期もあり挫折しそうになりましたが、思い切って胸の内をカウンセリングで相談し、良い解決策をいただきました。いつでも相談できる誰かがいたおかげで、ここまでこれたかなと思います。
そんなこんなで、成果物提出期間が迫ってから取り組み始めたので、本来は4週間でやるはずの成果物を3週間という期間でやることに。カウンセラーさんからは、「今回は、やりたくても無駄なことはしない」という的確なアドバイスを頂き、成果物提出という目標に集中して取り組むことができました。
テーマについては、子育て中ということもあり、今の日本の教育政策について調べてみようと思いました。
やればやるほど、こうゆうこともできるのかな?やってみたいな〜と欲が出てきたので、成果物提出後は改めてやりたいことに挑戦してみたいと思います。
2-やったこと
文部科学省HPに掲載されていた第4期教育振興基本計画の言葉をワードクラウドで可視化して、それぞれの関心を分析してみました。
テーマ設定の理由
文頭でも少し書いたのですが、自身も教育に携わる仕事をしているのと、昭和生まれの保護者として令和の教育がどう違うのか気になっているところです。それを何らのデータなどで分析することができないかと思ったからです。このような背景から、文科省による直近の教育振興基本計画のテキストを材料に分析を行うことにしました。
予想される期待
予想される期待としては、以下のとおりになります。これがある程度分析からも言えるのかどうかがポイントです。
近年はグローバル人材育成に力を入れている様子なので、引き続きグローバル、国際というワードが頻繁に出てくるのではないか。またコロナにより、現場ではだいぶDX化が進んでいるので、それらに関連した専門用語なども予想されます。
3-開発環境
Google Colaboratory
4-使った技術
-
Spire
今回使用した資料がPDFドキュメントだったので、テキスト形式でのファイルに変換するためにSpireを使いました。 -
wordcloud
wordcloudを使ってテキストファイルを可視化します。
使われている文字の出現頻度によって表示される文字の大きさを変えて視覚化したグラフを作成できます。
何を伝えたいのかわかりやすくなります。 -
Janome
今回は、Pythonで利用できる日本語の形態素解析エンジン(文章中の単語を分割して解析できる)である、Janomeを使うことにしました。
(他にも、Mecabなどの形態素解析できるライブラリがありますが、初心者であるので、Pythonパッケージとしてインストールするだけで使用できるJanomeを使うことにしました。)
5-手順
文部科学省のHPから、教育振興基本計画のテキストを取得します。今回は直近の令和5年の第4期の資料を用います。
PDF形式のファイルだったので、テキスト情報に変換しました。
ここはそんなに難しい作業じゃなさそうだからすぐ終わるかと思いきや、試行錯誤すること2日。なんとかPDFからテキストファイルへの変換に成功。頭では理解できたつもりでしたが、いざ手を動かしてみると全然ダメダメで理解不足を痛感しました。
"keikaku4.txt"というテキストファイルを作成し、保存。
教育振興基本計画(第4期)テキストファイルをjanomeで形態素解析しました。
名詞、動詞、形容詞を抽出し、そのままだと意味がない言葉がWordCloudにたくさん出てきてしまうので、デフォルトのSTOPWORDSに、追加で不要と判断した日本語ストップワードを加えます。
以上を経て、最終的に、教育振興基本計画(第4期)のWordCloudを生成しました。
6-使用データ
教育振興基本計画(第4期)
https://www.mext.go.jp/content/20230615-mxt_soseisk02-100000597_01.pdf
7-コード
教育振興基本計画(第4期)テキストファイルを読み込み、形態素解析を行って単語を抽出し、WordCloudを生成します。
(1)Spireをインストール
!pip install Spire.Pdf
(2)janomeをインストール
!pip install janome
- Pythonのパッケージ管理ツールである pip を使用して janome ライブラリをインストール。
(3) モジュールのインポート
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
from janome.tokenizer import Tokenizer
from google.colab import drive
- WordCloudとSTOPWORDS: ワードクラウドの生成に使用(STOPWORDSはワードクラウドで無視する一般的な単語のセット)。
- matplotlib.pyplot: グラフやワードクラウドの描画に使用。
- Tokenizer: 日本語テキストの形態素解析を行うためのクラス。
- google.colab.drive: Google Colab で Google Drive をマウントし、ファイルにアクセスするために使用。
(4) 日本語フォントのインストールとGoogle Driveのマウント
!apt-get install fonts-ipafont-gothic
drive.mount('/content/drive')
- 日本語フォント(IPAフォント)をインストール(ワードクラウドで日本語を正しく表示するために必要)。
- Google Colabの環境でGoogle Driveをマウントし、ファイルシステムとしてDrive内のファイルにアクセス可能にする。
(5) ストップワードの設定
stopwords = set(STOPWORDS)
additional_stopwords = {
'これ', 'それ', ... '方'
}
stopwords.update(additional_stopwords)
- ワードクラウド生成時に無視する単語のセットを定義。デフォルトの英語ストップワードに追加で日本語のストップワードを設定。
(6) 形態素解析を行う関数
def analyze_text(file_path):
t = Tokenizer()
words = []
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
tokens = t.tokenize(text)
for token in tokens:
part_of_speech = token.part_of_speech.split(',')[0]
if part_of_speech in ['名詞', '動詞', '形容詞']:
words.append(token.base_form)
return ' '.join(words)
- 指定したファイルパスからテキストを読み込み、形態素解析を行う。
- 解析結果から名詞、動詞、形容詞の基本形を抽出し、空白で連結して返す。
(7) ワードクラウドを生成する関数
def create_wordcloud(text, title):
wordcloud = WordCloud(
font_path='/usr/share/fonts/truetype/fonts-japanese-gothic.ttf',
background_color='white',
width=800,
height=400,
stopwords=stopwords
).generate(text)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.title(title)
plt.axis('off')
plt.show()
- 形態素解析の結果を受け取り、ワードクラウドを生成。
- 日本語フォントのパスを指定し、背景色やサイズ、ストップワードを設定。
- 生成したワードクラウドを表示。
(8) 実行部分
keikaku4_words = analyze_text('/content/keikaku4.txt')
create_wordcloud(keikaku4_words, 'keikaku4')
create_wordcloud
8-結果
考察
- 特に「人材」「経済変化」「振興」「家庭」というワードが大きく表示されました。
- また、コロナ後の政策ということもあり、コロナに関連するワードも多数出てきました。
- 表示は大きくないけれど、「ICT」「デジタルトランスフォーメーション」など、情報通信技術に関わるワードもいくつか検出されました。
- 以上の結果から「人材」への注目が大きくあることがわかりましたが、そこの詳細は資料を読み込まなければわからないものとなりました。そのほかの大きく表示されたワードも大まかなものばかりだったので、具体的にどういう政策をしたいのか汲み取るにはこのグラフだけでは難しいのかなと思います。扱う資料によってwordcloudの向き不向きがあることがわかりました。
9-今後の活用
- 今回は日本の教育政策を扱ったので、今後は海外の教育政策もいくつかピックアップして比較してみると面白いかなと思います。
10-おわりに
プログラミング未経験でAidemyを受講し、この業界は男性の数が圧倒的に多く、最初はそんなところでやっていけるか不安はありました。実際受講してみて、カウンセリングでわからないところは丁寧に説明していただき、超初心者の自分でもコードをかけることがわかり良かったと思います。
習得したスキルを活かし、現在あるスクールのカリキュラムをより良いものにしていきたいと思います。