4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

犬と猫はどっちが注目されている?Wikipediaの更新頻度を調べる

Last updated at Posted at 2024-08-08

概要

生き物への興味・関心の方向性も様々あると思いますが、Wikipediaの記事の更新頻度を見ると、その傾向の一端がうかがえるのではと思い、調べることにしました。
今回は例として、"Cat","Dog"の比較を行います。

検索ボリューム

直近の関心度合いを調査するとき、検索された量は一つの参考になるので、Wikipediaを身肉前に、Google Trendsにて見てみます。

image.png
過去5年、ほぼ定常的に、全世界だとDogが優位ですね。
ルーマニア、インドネシアはCat優位など、地域差もありそうなのでこれも調べると面白いかもです。

Wikipediaの更新頻度

ChatGPTさんに、更新頻度の調べ方を聞いたら、次のコードを出してきたので、ひとまずこのまま走らせます。

import requests
import pandas as pd
from datetime import datetime

def get_article_revisions(article_title):
    url = "https://en.wikipedia.org/w/api.php"
    params = {
        "action": "query",
        "prop": "revisions",
        "titles": article_title,
        "rvlimit": "max",
        "rvprop": "timestamp|user",
        "format": "json"
    }
    response = requests.get(url, params=params)
    data = response.json()
    revisions = data['query']['pages']
    revs = []
    for page_id in revisions:
        revs.extend(revisions[page_id]['revisions'])
    return revs

def calculate_edit_frequency(revisions):
    dates = [datetime.strptime(rev['timestamp'], '%Y-%m-%dT%H:%M:%SZ') for rev in revisions]
    df = pd.DataFrame(dates, columns=['timestamp'])
    df['year_month'] = df['timestamp'].dt.to_period('M')
    frequency = df['year_month'].value_counts().sort_index()
    return frequency

article_title = "Cat"  # Example article title
revisions = get_article_revisions(article_title)
frequency = calculate_edit_frequency(revisions)
print(frequency)

現時点(2024/8/5)で走らせると、

year_month
2022-06    16
2022-07     8
2022-08     9
2022-09    20
2022-10    13
2022-11    23
2022-12    33
2023-01    21
2023-02    22
2023-03     4
2023-04     7
2023-05     6
2023-06     8
2023-07     5
2023-08    25
2023-09    22
2023-10    44
2023-11    44
2023-12    21
2024-01    13
2024-02    17
2024-03    22
2024-04    22
2024-05    33
2024-06    10
2024-07    25
2024-08     7
Freq: M, Name: count, dtype: int64

このように出力されます。合計が500なのでAPIから最新の500件の更新日時が取れているようです。問題なさそうなので、["Cat","Dog"]でそれぞれ出力して、比較します。

recent_updates = pd.DataFrame([])
articles = ["Cat","Dog"]
for article_title in articles:
    revisions = get_article_revisions(article_title)
    frequency = calculate_edit_frequency(revisions)
    df = pd.DataFrame(frequency)
    df.columns=[article_title]
    recent_updates = pd.concat([recent_updates,df],axis=1)
recent_updates = recent_updates.sort_index()
recent_updates.plot()

image.png

直近500件の更新でみると、Catのほうが直近に更新されていて、Dogのほうが500件前の更新日が過去にさかのぼります。Dogが2024に追い越しているようにも見えます。

検索ボリュームと比べると、記事の更新は変動が大きいです。一方で、検索とは異なる傾向が見えているので、とらえている現象もおそらく別で、使い道もありそうかと思います。

今回は以上です。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?