아타마의 내용을 알고 싶어서 ... 마츠이 이치요 씨의 대체품을 만들어 보았다

이곳은 프롬스크래치 Advent Calendar 2017 22일 의 기사입니다.

소개



특히 재료가 생각나지 않고, 어떻게 하면 좋겠다고 생각하면서 재미있게 TV를 붙였을 때・・・
연주하는 미소로 보도진과 이야기하는 마츠이 일대씨의 모습이 있었습니다.

별로 몰랐습니다만, 아무래도 이 분은 올해 1년, youtuber로서 무엇인가 세상을 소란시키고 있던 모양.

그 연주하는 미소를 보았을 때 「조금 만나고 싶지는 않지만 무엇을 생각하고 있는지 알고 싶다.」그렇게 생각하게 되었던 것입니다・・・

그래서 이번 내용은 마츠이 일대의 대체물을 만들고, 그녀의 결혼관이나 인생관을 들어보기로 합니다.



실시하는 흐름은 다음과 같습니다. 블로그나 실제로 발한 코멘트로부터 자연언어 처리해, 그녀에게 있어서의 결혼이나 인생에 가까운 단어를 끌어내려 보자고 하는 치수입니다. (크리스마스도 가까운데 뭐 했던 나는····)
1. 마츠이 이치요씨의 블로그나 youtube, 기자 회견의 코멘트를 스크레이핑한다.
2. 취득한 문장을 알기 쓰기
3. 단어를 벡터 변환
4. 「결혼」, 「인생」에 가까운 단어를 취득한다

마츠이 이치요씨의 블로그나 youtube, 기자 회견의 코멘트를 스크래핑한다.



우선은 원이 되는 데이터를 취득합니다. 자료는 블로그와 실제로 발행하는 코멘트입니다. 코멘트에 대해서는 이상하게도 자신의 블로그에 전문서 일으키거나 하고 있는 사람이 있었으므로, 그 분의 블로그로부터 각각 겟트합니다. 아래의 예는 아메브로의 내용을 억지로 취득하고 있습니다.

스크래핑에는 BeautifulSoup을 사용했습니다.
사용법 등은 다른 투고 등을 참고해 주시면 좋겠습니다.
참고 : Python과 Beautiful Soup으로 스크래핑
import urllib.request
from bs4 import BeautifulSoup

blog_list = []

#松居一代の作成したblog数
MATSUI_BLOG_COUNT=587

#松居一代のblogのURL Format
MATSUI_BLOG_URL='https://ameblo.jp/matsui-kazuyo/page-{}.html'

for i in range(1, MATSUI_BLOG_COUNT):
    url = MATSUI_BLOG_URL.format(i)
    html = urllib.request.urlopen(url).read()
    soup = BeautifulSoup(html, "lxml")

    # divの要素を取得
    div_list = soup.find_all("div")
    for div in div_list:    
        try:
            string_ = div.get("class").pop(0)
            if string_ in "skin-entryBody":
                blog_list.extend(div.contents)
                break
        except:
            pass

f = open('matsui_blog.txt', 'w') 
for blog in blog_list:
    f.write(str(blog)+'\n') 

f.close() 

취득한 문장을 알기 쓰기



다음에 취득한 블로그나 코멘트 정보를 자연언어 처리 가능한 상태로 하기 위해(때문에) 와카치 로 합니다. 형태소 해석 엔진에는 mecab을 사용합니다.
사용법 등은 다른 투고 등을 참고해 주시면 좋겠습니다.
참고 : mecab에서 나누기 명령
mecab -Owakati matsui_comment.txt -o matsui_data.txt

단어를 벡터로 변환



그런 다음 글을 입력하여 단어를 벡터로 변환합니다. 벡터 변환에는 gensim의 word2vec을 사용했습니다. 사용법 등은 다른 투고 등을 참고해 주시면 좋겠습니다.
참고 : Word2Vec을 이용한 동의어의 추출이 잘 되었으므로, 분석을 정리해 보았다
from gensim.models import word2vec
import sys

sentences = word2vec.LineSentence('matsui_data.txt')
model = word2vec.Word2Vec(sentences,
                          sg=1,
                          size=200,
                          min_count=5,
                          window=10,
                          hs=1,
                          negative=0)
model.save('matsui_data.model')

'결혼', '인생'에 가까운 단어를 얻



작성한 모델을 이용해 「결혼」, 「인생」의 동의어를 출력합니다.
from gensim.models import word2vec
import sys
import pandas as pd

model   = word2vec.Word2Vec.load('matsui_data.model')
results = model.wv.most_similar(positive=[u'人生'],negative=[], topn=10)

pd.DataFrame(results,columns=("ワード","関連度"))

우선은····「결혼」!


비즈니스 · · ·
악····
사건·····

자와 · · · · · · · · · · · ·

네, 매우 그루비입니다 ...
계속해서・・・「인생」!


자와・・・・

하하하아···아직 가자.
단어를 벡터로 바꾸는 것은 연산이 가능합니다. 그래서 "결혼"에서 "남편"을 당겨보고 싶습니다!


안심

자와・・・자와・・・・・

솔리드가 들은 훌륭한 대답입니다. 「이어」와 「고마워」도 개인적으로는 지팡이입니다.

마지막으로



거기까지 큰 데이터를 입력하지 않기 때문에 큰 결과는 얻을 수 없을까 생각했습니다만, 생각했던 것 이상으로 주제가 있는 회답이 되어 놀라움이었습니다.

그런데 메리크리까지의 3일・・・・
종반의 소중한 장면에서 캐주얼에 뭐라고 투고를 부딪쳐 버렸다고 조금의 반성을 담으면서・・・
후속 3명에게 맡기고 싶습니다.

그리고는 부탁했다! 그럼!

좋은 웹페이지 즐겨찾기