kabablog
Programming

PythonでWebページからテキストデータを抽出し、形態素解析器を使って形態素に分けてみた

はじめに

新たにPythonを勉強する必要があり、Pythonで簡単なサンプルアプリを作ってみたので記録しておきました。

このページのゴール

特定のWebサイトからテキスト情報を抽出し、形態素解析した結果を表示する。左記が目的なので使うパッケージの組み合わせは、こだわっていません。
最終的には、形態素解析にかけたあと、実際は分かち書きし、ベクトル化したのちいろいろしたいと思っていますが、まずは前半戦ということでここまでにしました。

実際に作ってみる

流れは以下のようになります。

  1. 特定のWebサイトからhtml情報を抜き出す
  2. 取得した情報はhtmlなので、テキストのみ抽出する
  3. 抽出したテキストを形態素解析器に入力
  4. 形態素解析の出力結果を出力する

形態素解析とは

形態素解析とはwikipedia(形態素解析)に書いてあります。

準備

形態素解析器をインストール

今回はmecabを使いました。また、文法的な解析結果をそのまま出力するのではなく、オプションをつけて分かち書きをするようにします。

Pythonをインストール

Pythonをインストールします。ここではpython3系で、windowsを前提とします。windows用ダウンロードページ

インストール後、実行に必要なPathの設定をします。設定方法は省略します。
念のため、動作確認をしてみます。

仮にファイル名をhelloworld.pyとしました。

print("Hello World!")

これだけ書いて実行します。Hello World!とでればOKです。

$ python helloworld.py
Hello World!
$

必要なパッケージのインストール

必要なパッケージをインストールします。

$ pip install requests
$ pip install beautifulsoup4
$ pip install mecab

今回必要なパッケージは下のコードでimportしているライブラリになります。

import requests
from bs4 import BeautifulSoup
import MeCab
#(1)

req = requests.get('https://news.yahoo.co.jp') #(2)

soup = BeautifulSoup(req.content, "html.parser") 
sentence = soup.find("ul", "newsFeed_list").text #(3)

tagger = MeCab.Tagger("-Owakati")
result = tagger.parse(sentence) #(4)

print(tagger.parse(result)) #(5)

ざっくり説明です。

  1. 必要なライブラリをimportする
  2. 任意のサイト(今回はyahoo!のnewsより)リクエスト情報を取得する
  3. beautifulsoup4を使ってhtmlを解析し、htmlの要素をもとにnewsFeed_listのテキスト情報を抽出する
  4. mecabを使い、htmlを解析したテキスト情報を入力として、その結果を分かち書きする
  5. 結果をコンソール上に出力する

結果をみる

結果は、日々更新されるニュースから抽出しているため、タイミングによって異なりますが、テキスト情報が出力されるはずです。ただ、細かく見るともう少し改善したほうがよさそうな気もします。

最後に・ネクストステップ

今回は形態素解析器にかけた程度でしたが、文字情報を数値することもでき、それを統計処理することでそれらしいアプリになると思いますが、次回以降に作ってみたいと思います。また、辞書をアップデートしたり、参考にさせていただページのように、mecabの使い方を洗練させたり、Webアプリ化もやってみたいと思います。

参考にさせていただいたページ

PythonとMeCabで形態素解析(on Windows)
WindowsやmacやLinuxにpipでPython用MeCabバインディングをいれる

Blog Ranking Site

よかったら応援クリックお願いします!

にほんブログ村 旅行ブログ 東南アジア旅行へ
にほんブログ村 にほんブログ村 旅行ブログへ
にほんブログ村 PVアクセスランキング にほんブログ村