見出し画像

お洒落になりたくてファッション誌をコンピューターで解析してみる話

ファッション誌が読めない。読めたためしがない。
何しろイタリア人がいっぱい出てくるし、ニューヨークの最新情報が届くし、よくロンドンの伝統的な何かを使ってくるので遠い世界過ぎる。用語も知らない言葉が多い。服飾の専門学校を卒業しないと読む資格がないのだろうかと思って申し訳なくなってしまう。美容院で渡されると辛い。

なんでこんなにも難しいのだろうかと。
な~んとなく、ふと「ファッション誌をコンピューターに読ませて分析してみたら何かわかるのではないか?」と思ってわざわざPythonの勉強をしてファッション誌の解析をしてみた。技術的には大したことは全くやってないので技術に興味のある人のための記事ではありません。なのでQiitaじゃなくてネタ的にNoteに。

使っている技術
Google Colaboratory
Beautiful Soupを使ったWebスクレイピング
Janomeにテキストを読ませた品詞分類
Wordcloud表示

処理手順
ファッション誌のウェブサイトから記事を10年分ほど取得。その後、Janomeをいじっていったん邪魔な頻出語などを眺め、記事内のノイズを除去。除去済みのテキストから単語をカウントしてワードクラウドに表示。

やってみてわかったこと
やはりというか、「だから理解できなかったんだな」という原因の一端のようなものが分析できた。自分の知識や語彙に関する不得意分野、弱点とでもいえるようなものがあぶりだされたというべきか。ファッション誌の文章が苦手な方にはもしかしたら参考になるかもしれない。

結果から見てみる
ふむ。私の中の単語辞書にないものがたくさんあるのがわかる。まずゴルフ関連、お前だよ。確かにファッション誌にはゴルフ関連の話題は頻出している印象(まぁ私が男性で年齢的にもそういうもんなんだろう)。そして英国、イタリア、ニューヨーク、フランス、パリ、銀座。お前らも。まずもってそのラベルから想起できるものは私の中にほぼ無い。

ダウンロード

そしてなるほど、と思った最重要ワード「さん」。これはファッション誌の中でインタビューやコメント等で人名につけられている敬称だ。つまりファッション誌はインタビューや誰かのコメントが結構多いのだ。故に、そこでインタビューされている人、コメントをつけている人が何者かよくわからなければ、まぁ理解不能といえる。つまりファッション誌はハイコンテクストなコンテンツであり、コンテクストが分からない人には理解できなくて当たり前、ちゃんと説明をしてくれないと本来アカンのではないのか、と言えなくもない。そして冒頭で言った「読む資格がない」というのは逆説的に正解でもある。

実装
スクレイピングパート
SEOサイトを作る記事を読んで「import.ioが簡単だ」とか書いてあったけど、アレの使い方覚えるより自分で書いた方が圧倒的に速いと思う。

from bs4 import BeautifulSoup
from google.colab import files
import requests
from time import sleep
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
baseUrl = 'Target-URL'
filename='sample.csv'
for i in range(1,2000):
 url = 'Target-URL/archives/'+str(i)
 res = requests.get(url)
 if res.status_code==200:
   print('OK:' + url)
   soup = BeautifulSoup(res.text, 'html.parser')
   content = soup.find(class_='article').get_text()
   with open(filename, 'a') as file:
     file.write(date+','+content+'\n')
   
 elif res.status_code==404:
   print('NOT OK:' + url)

upload_file_1 = drive.CreateFile({'title': filename})
upload_file_1.SetContentFile(filename)
upload_file_1.Upload()

ワードクラウドパート

import janome
from janome.tokenizer import Tokenizer
from wordcloud import WordCloud
import matplotlib.pyplot as plt 
t = Tokenizer()
tokens=t.tokenize('ターゲットテキスト')
word_list=[]
for token in tokens:
   word = token.surface
   partOfSpeech = token.part_of_speech.split(',')[0]
   partOfSpeech2 = token.part_of_speech.split(',')[1]
    
   if partOfSpeech == "名詞":
       if (partOfSpeech2 != "非自立") and (partOfSpeech2 != "代名詞") and (partOfSpeech2 != "数"):
           word_list.append(word)

words_wakati=" ".join(word_list)
print(words_wakati)

f_path = '/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf'
wordcloud = WordCloud(background_color="white", 
                     font_path=f_path, 
                     width=700, 
                     height=600).generate(words_wakati)
plt.figure(figsize=(12,10))
plt.imshow(wordcloud)
plt.axis("off") 
plt.show()

勉強しながらだらだらやって2日くらい。

まとめと次なる展開
雑ではあるがファッション誌をコンピューターに読ませてみて、私が理解できない原因の一端は分析できた気がする。つまりファッション誌を読み解きたければゴルフをし、英国、イタリア、フランスの印象を深め、ファッション誌に登場する人物の背景情報やストーリーを把握すれば恐らく理解は進むだろう。

だがまだ課題がある。
それはファッション誌に時折登場する初見の単語や形容詞たちだ。今ソースのテキストをちらっと眺めてもいきなり「シャンブレーシャツやオックスフォードのBDに合わせるボウタイが」どうのこのと出てきて、この1センテンスの映像が何も脳に浮かばない。

今回の言語解析では頻出する言葉をワードクラウド化して分析に使い、いうなれば統計的にはヒストグラムのような感じで「大きい問題を潰せば全体が抱える問題の大部分は解決する」という発想だ。

次の課題は頻出ではないが文章の理解度を圧倒的に下げてしまう「意味を知らない言葉」を抽出してそれらにどう立ち向かうかを考えてみたいと思っている。いつ、どのようにやるかはまだ全然考えていない。

この記事が気に入ったらサポートをしてみませんか?