【자유 연구】Wikipedia의 갱신과 트렌드에 관련성은 있는가?

【자유 연구】Wikipedia의 갱신과 트렌드에 관련성은 있는가?



겟타~입니다. 초등학교 20학년 정도입니다. 자유 연구 발표를 합니다.

……

동기는 아래에 씁니다만, 흥미 솟았으므로 해 보면 사쿠로 실장할 수 있었으므로,
qiita에 올려 보겠다고 생각하면 딱 아드카레의 시기였으므로 적당하게 올릴 때입니다.

동기



아라시의 니노미야 씨가 결혼 발표했을 때, Wikipedia가 거칠어지고 있었던 것이.

물론 그때는 트위터의 트렌드에 <는 '니노 결혼'이라든지 들어 있었다.

그래서 "혹시 Wikipedia와 Twitter 트렌드에는 관련이 있을까 "라고 생각했다.

관련이 있다면 무엇이 기쁜가 하면, Wikipedia를 보는 것만으로 트렌드도 억제하면서, 구체적인 지식을 얻을 수 있고, SNS를 보는 것보다도 트렌드에 대해 자세하게 알 수 있는 것은 아닐까.

방법



Twitter의 트렌드를 API로 취득한다.

Twitter의 일본 트렌드를 API로 취득하는 프로그램
def auth_api():
    auth = tweepy.OAuthHandler(api_key.CONSUMER_KEY, api_key.CONSUMER_SECRET)
    auth.set_access_token(api_key.ACCESS_TOKEN, api_key.ACCESS_SECRET)
    return tweepy.API(auth)

def get_trend_words():
    api = auth_api()
    trends = api.trends_place("23424856") #日本のWOEID
    trend_words = []
    for d in trends[0]["trends"]:
        trend_words.append(d["name"])
    return trend_words


Wikipedia의 최근 업데이트 페이지를 스크래핑하여 목록을 가져옵니다.

Wikipedia의 최근 업데이트를 받는 프로그램
def get_wikipedia_log_keywords():
    url = 'https://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0?hidebots=1&hidecategorization=1&hideWikibase=1&limit=500&days=7&urlversion=2' # limitを変えれば取得件数が変わる
    html = requests.get(url)
    soup = bs4.BeautifulSoup(html.text, "html5lib")
    keywords = [el.text for el in soup.find_all(class_="mw-changeslist-title")]
    return keywords


각각의 리스트를 전체 탐색해 단어가 일치하면 세어 리스트의 길이로 나누어 출력.
import twitter_trend
import wikipedia_ch_log

def main():
    print("------wikipedia 500 keywords------")
    print()
    wiki = wikipedia_ch_log.get_wikipedia_log_keywords()
    print(wiki)
    print()
    print("------twitter trends------")
    print()
    twi = twitter_trend.get_trend_words()
    print(twi)
    cnt = 0
    for s in twi:
        if "#" in s:
            s = s[1:] #ハッシュタグ除去
        for s2 in wiki:
            if s in s2:
                print("same word :", s, s2)
                cnt += 1
    print("count :", cnt)

    print("coincidence :", cnt / (max(len(twi), len(wiki))))

if __name__ == "__main__":
    main() 

pythonista3에서 줄 바꿈 코드를 사용할 수 없습니까?

결과



전혀 일치하지 않는 경우도 있었다. 1건만 일치. 위로 끊어지고 있는 것이 Wikipedia의 리스트로, 아래가 Twitter의 트렌드. 일치한 것이 「쿠보타 토시노부」 1건으로, 일치도가 0.002. 고찰 이번에는 Wikipedia와 Twitter의 비교를 해 갔습니다만, Wikipedia 약 500건, Twitter 트렌드 약 50건에 대해서는 0~1건의 일치 밖에 없었습니다. 스쿠쇼 찍지 않은 중에서도 기껏해야 4건 정도의 일치 밖에 없었습니다. 이 결과로 이들과 전혀 관련성이 없다는 것보다는, 평가 방법에 문제가 있었습니다. 일단 Twitter의 해시 태그를 제외한 정도의 처리는 하고 있습니다만, 그러면 불충분하고, 서두에서도 말하고 있듯이, 「니노 결혼」이라든지 트렌드 들어가도, Wikipedia에는 ​​「니노미야 카즈야」로 등록될 것이므로, 당연히 이 방법으로는 일치하지 않네요. 이것을 잘 처리하려면 각 트렌드 워드에서 어떤 방법 (예 : Google 검색)에서 관련 단어를 빼고 나서 Wikipedia와 비교하는 것이 좋을지도 모릅니다. 또, 평가치도 일단 최대치가 1이 되도록(듯이) 설정했습니다만, 큰 쪽의 리스트의 크기는 평가치에 효과가 있습니다만, 작은 쪽(이번에서는 트랜드)의 리스트의 사이즈가 평가에 전혀 영향을 미치지 않기 때문에, 그다지 좋지 않은 평가식이 되고 있습니다. 감상 전부터 Wikipedia의 이력 빼는 발상은 있었습니다만, 좀처럼 귀찮게 하고 있지 않았습니다만, 엄청 간단하게 할 수 있어서 좋았습니다. Twitter의 트렌드도 API로 준비되어 있어, API 키도 전에 취득하고 있었으므로 빨리 할 수 ​​있어서 좋았습니다. 앞으로 계속 할 것이라면, 관련어를 빼거나 하고 일치도를 보다 상세하게 조사해 보고 싶네요. 그 결과 얼마나 트렌드와 관련이 있는지 알면, Wikipedia의 기사를 자동으로 읽어 트랜드를 해설하는 사이트를 부산물적으로 만들 수도 있을지도 모르겠네요. 참고 자신의 기사
bs4의 사용법을 기억하기 위해

좋은 웹페이지 즐겨찾기