僕がデータ分析者として覚醒するまで

しがない会社員がデータ分析者として覚醒するまでのブログ

テキストマイニング(前回の続き2)

概要

前回までのあらすじ

  • 入力したURL(yah○○ニュース)から本文を抽出
  • 抽出した本文から名詞を抜き出し
  • 抜き出した出力はこんなかんじ f:id:snuow:20190417135943p:plain

今回やること

  • グラフ化して、単語の出現頻度を確認する
  • グラフ化はpandasのDataFrameから行う

SourceCode

# URLを指定し、htmlデータを取得
url = u'https://headlines.yahoo.co.jp/hl?a=20190419-00000057-it_nlab-sci'
response = urllib.request.urlopen(url)
data = response.read().decode('utf-8')
soup = BeautifulSoup(data)

main = soup.find('p',class_="ynDetailText yjDirectSLinkTarget")

text = main.text
token_filters = [POSKeepFilter('名詞'), TokenCountFilter()]
a = Analyzer(token_filters=token_filters)

# 取得したデータをデータフレームに格納する。
# それぞれname,countsに分けてデータフレームを作成する。
df = pd.DataFrame(index=[],columns=['name','counts'])
for k, v in a.analyze(text):
  add_list = pd.Series([k,v],index=df.columns)
  df = df.append(add_list,ignore_index=True)

# グラフの背景を白くする。
# Colaboratoryのダークモードだと、透過してnameが見えなくなるため
plt.rcParams['figure.facecolor'] = 'white'

df.index = df.name
df[df.counts > 2].sort_values('counts',ascending=False).plot(kind='bar',figsize=(15,5))

f:id:snuow:20190419173132p:plain

まとめ

  • 1つの記事で名詞の出現頻度を知ることができるようになった。
  • アライさんがでてくることはわかりやすいが、他の「Twitter」や「アカウント」などの出現回数が少ないため、なんの記事なのかこれだけでは判断が難しいかもしれない。
  • 次はクローリングして、名詞を収集してなにかできないか模索する。