【Python入門】WEB上のデータを抽出してテキストマイニング(スクレイピング)

Python・GAS
ワタシ

今回は“スクレイピング・テキストマイニング”について理解を深めます。

データ分析をする中で一番、感覚的かつ身近なもの(Twitter等)で分析が出来る手法がテキストマイニングです。

出来そうなことは多そうだけどどうやるの?

と気になる人も多いと思うので下記に整理します。

尚、テキストマイニング(自然言語処理)の統計的な成り立ちや仕組については下記でまとめております。

>>UdemyのPythonのおすすめ講座

今回の論点整理

”スクレイピング・テキストマイニング“の使いドコ

今回はネット上のテキストを読み込んで(スクレイピング)その情報を元に整理・分析(テキストマイニング)します。

上記のように実際のHP等、WEB上のデータなどの情報を抽出しながら整理することが出来ると分析の幅が広がります。

※ただ、ウェブ上のデータを抽出するスクレイピングは機密情報を引き抜いたりするなど違法行為にも繋がりやすいので取り扱いには注意が必要です。

ご参考ページ(外部リンク)

具体的な想定場面

今回の想定は以下のような場合です。

今回の想定
想定:社内のWEBマーケターで上層部から「最近の大学の動向を報告しろ」と言われた
状況:お金をかけずにとある業種(大学)の最近の動向をWEB上から分析したい
意図:テキストマイニングなどを用いて時短でそれっぽい分析をしたい

このような時、「スクレイピング・テキストマイニング」という考え方が使えるのだと思います。

以下はこの知識を使う際に思い出すべき点を、後で振り返れるようにポイントを絞って備忘録としてまとめます。

今回の抑えドコ

そこで、今回は上記を実現する手順について下記に備忘録的にまとめたいと思います。

抑えドコ!
  • 今回の焦点
    ▷お金をかけずにWEB上の情報を分析したい
  • ポイント
    ▷分析の目的・考察観点
    ▷スクレイピング実施
    ▷テキストマイニング実施

”スクレイピング・テキストマイニング”理解のポイント

ポイント① 分析の目的・考察観点

まず、テキストマイニングと言われる手法がどのようにビジネスシーンでは利活用されているかという視点で考えると主に下記の3点かと思います。

分析の目的
  • 個人(潜在顧客)の声の抽出と傾向分析
    ▷アンケートやTwitter等のSNSを介した声の抽出
  • 業界(企業/組織)の特徴の可視化
    ▷ウェブ上のHP等を介した各企業の特徴比較など
  • 過去からのデータを元にした将来予測
    ▷新聞データなどからの業界動向予測など

まずどこに注目して分析を進めるかという点が最も重要になります。

上記の目的に応じて手段(扱う手法)が変わるのでまずはここからかと思います。今回は2つ目を焦点にあてた場合です。

ポイント②スクレイピングの実施

今回のケースで考えると扱う手法は以下の2つです。それぞれの特徴も含め以下の通りです。

  • スクレイピング
    ▷ネット上からデータ抽出
  • テキストマイニング
    ▷抽出データを傾向分析

後者はかなり広義ですが、この中の手法の一つを行うとそれっぽくまとまります。これは後述します。

一方で前者のスクレイピングに関しては以下のような式で抽出が可能です。

import pandas as pd
from bs4 import BeautifulSoup
import requests
 #分析対象は大学HP #url = 'https://ja.wikipedia.org/wiki/%E6%97%A9%E7%A8%B2%E7%94%B0%E5%A4%A7%E5%AD%A6'
url = 'https://www.waseda.jp/top/about/vision'
 #データ抽出
response = requests.get(url)
response.encoding = response.apparent_encoding

soup = BeautifulSoup(response.text, 'html.parser')

title = []
for i in soup.find_all('p'):

   ## 改行コードを削除
   title.append(i.getText()[6:].replace('\n', ''))

詳しくはbeautiful soupで検索すれば詳しい解説はもっとでてくると思います。

ポイント③テキストマイニングの実施

テキストマイニングは端的にえば

文字系の分析!

です。これには色々手法はありますが、ザックリ言うと以下のようなものがあります。

テキストマイニングのタイプ
  1. 文章を単語レベルに整理する分析
    ▷形態素解析等で品詞・単語分解
  2. 単語の傾向を把握し可視化する分析
    ▷①を元にワードクラウド等のビジュアル化
  3. 複数の単語・文章の関係性分析
    ▷word2vec, doc2vec等で文章の関係性分析

ザックリ言うと上記の組み合わせだと思います。ポイントは文字の情報を頻出語句等の特徴から定量化してそれを元に機械学習させるという流れです。

今回は①②を扱って行います。①はjanomeを利用し、②はワードクラウドを利用します。

#使用ライブラリ
from janome.tokenizer import Tokenizer
from wordcloud import WordCloud

## ストップワードは一旦なし
stop_words = ['']

## タイトルの名詞のみをスペース区切りのテキストへ変換
t = Tokenizer()

words = []

for i in title:
   tokens = t.tokenize(i)

   for token in tokens:
       ## 品詞を抽出
       pos = token.part_of_speech.split(',')[0]

       ## 品詞から名詞だけ抽出
       if pos in ['名詞']:
           ## 必要ない単語を省く
           if token.base_form not in ignore_words:
               words.append(token.base_form)

text = ' '.join(words)
 #日本語フォントの指定
fpath = "C:/Windows/Fonts/YuGothM.ttc"
 #ワードクラウドの各種設定指定
wordcloud = WordCloud(background_color="white",#背景を白に
                     stopwords = stop_words,
                    font_path=fpath,width = 800,height=600).generate(text)
 #pngで保存する
wordcloud.to_file("./waseda.png")

上記を行うとこのような形でアウトプットします。

形態素分析の箇所がどのような仕組みで動いているのかは下記にまとめております。

【データサイエンス】自然言語処理、テキストマイニング、word2vecとは

自作プログラムへ拡張する

ここからは自分で拡張する方法に関しても触れておきます。

「もっと本当はこういった拡張をしたいんだけどな…」

という想いが芽生えた場合は、上記の構成を理解した上で、自分なりにアレンジする必要があります。

私のようなプログラミング初心者の人は下記3点を検討すると拡張が簡単にできます。

1.Pythonの参考書を活用する

Pythonをかじり始めて、複数の書籍に目を通しはじめていますが、

色々とみている感じ下記の参考書などが扱いやすかったです。

created by Rinker
¥2,138 (2021/06/20 09:52:22時点 Amazon調べ-詳細)

冒頭あげたPythonの基本的な構成や仕組の他、とても実践的な内容が記載されています。

ワタシ

良い人にあたるとその後もメッセージなどで軽い相談ができる場合もあります

2. 動画教材(Udemy)の活用

個人的に一番コスパが高くオススメしたいのがコレ。

何かというとUdemyを活用した動画学習です。

分からないところがある時に、必要なところを本で読むのではなく、動画で解説してもらう方が理解のしやすさが段違いです。

また、講師の評価もついており、個人的な所感ですが、基本的に4.0以上の評価のコンテンツであればハズレはない印象です。

当然Pythonの日本語の動画も多く、日本語講師の解説動画も多数あるので、安心です。

個人的にオススメしたいのは下記の講座。

これで基本的な利活用から応用部分までも網羅的にマスターできます。

>>UdemyのPythonのおすすめ講座

色々とPythonの講座動画があったのでつまみ食いしましたが、上記がわかりやすく、評価も高くて最初の第一歩にはオススメです。

基本的なところから入りますが、簡単な機械学習のポイントを含め、今回と扱ったスクレイピングなども付録で取り扱ってくれています。

何個の動画も見るのは時間もお金も勿体ないので、狙いを定めて買うのがオススメ。大幅ディスカウントされているときは特にねらい目です!

ツマ

割引はいつくるか分からないからタイミングは逃さないようにしないとね!

3. プログラミングスクールを利用する

そして、最後の手段ガコレです。

特に、『時間がない!早く学びきりたい!』という人にオススメしたいのがこれです。

>>TechAcademyでおすすめ講座の「Pythonコース」

これは費用もかかりますが最も学習効率が高いです。

実際にTechAcademyは利用してみましたが、初心者を想定したカリキュラムが設定されており初心者でも安心です。

そのため、参考書を使ってみたが、自分でペースを作りにくい…という人には一番合うと思います。

個人的に、メンターに都度、相談をしながら学習リズムを作る事が一番のよいポイントです。

また、メンターによるかもしれませんが、私の場合は、カリキュラムに関連する内容であればカリキュラム外でも色々教えてもらえました。

その点、Pythonでやりたいことがある人は色々学べると思います。

>>TechAcademyでおすすめ講座の「Pythonコース」

特にキャンペーンなどをやっているときは、オマケがとても豪華だったりするので、参照してタイミングを逃さないようにしましょう!

ワタシ

私もオマケ狙いのキャンペーン狙いでコスパよく学べて大満足でした

まとめ 

上記を活用する際に、理解しておくべきポイントは以下3点です。

今回の抑えドコ
  • ポイント①:分析の目的・考察観点
     ▷まずはビジネス課題から目的を見定めて着手をする
  • ポイント②:スクレイピングの実施
     ▷WEB上のデータを抽出する手法
  • ポイント③:テキストマイニングの実施
     ▷文字系の分析、色々手法はあるがどれも定量化して分析する手法

上記、具体例をまとめてみましたが、この領域は最も手軽かつ、最も幅広く色々できると思います。

ただ、目的を考えてから着手しないと何となく面白いものができた(出来そう)で終わりやすい領域でもある気がします。

そのため、まずは上記コードで試してみつつ、参考書や動画・スクールを使いながら自分の好きな形に拡張していきましょう!

思い立ったが吉日です、モチベーションが高いうちに実践をして知識を深めていきましょう!(‘ω’)ノ

ご精読頂きありがとうございました。
m(_ _)m

>>UdemyのPythonのおすすめ講座

その他、Python初心者が抑えたいポイント集

Python(主にデータ分析・自動化)に関しては下記のポイントを抑えると実務力につながっていきますので合わせてご参照下さい(‘ω’)ノ

ーPythonのインストール、データ読み込み、各種分析を試すー

【Python入門】WindowsとiPad両方でプログラミング環境を整える

【Python入門】エクセルファイルの読み込み方法

【Python入門】エクセルの”ピボットテーブル”をプログラムする

【Python入門】データ分析の”ビジュアル化”で抑えるべきライブラリとは

【Python入門】回帰分析や分類問題が使えるsklearnの使い方

【Python入門】顧客データを読み込みクラスタリング・ペルソナ分析

【Python入門】画像データを元にディープラーニングで自動判別(CNN等)

【Python入門】WEB上のデータを抽出してテキストマイニング(スクレイピング)

【Python入門】Twitterデータでテキストマイニング(APIの利用)

【Python入門】機械に自動でモデル選定させる(AutoML活用)

【Python入門】iPad×Kaggleで手軽な学習環境を創る

【Python入門】iPad×Google Colabalatoryで手軽にtwitter分析

ーPythonを使ってExcelを扱う “openpyxl”の活用ー

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる①

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる②

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる③

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる④

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる⑤

ーPythonを基礎から学ぶ “TechAcademy”の活用ー

>>【Python】TechAcademyを実際に使ってみて学べたこと