[PYTHON] [Recherche gratuite] Y a-t-il un lien entre les mises à jour de Wikipédia et les tendances?

[Recherche gratuite] Y a-t-il un lien entre les mises à jour de Wikipédia et les tendances?

C'est Getta. Je suis environ 20e. Je présenterai ma recherche gratuite.

……

J'écrirai le motif ci-dessous, mais cela m'intéressait, alors je l'ai essayé et j'ai pu l'implémenter rapidement, donc Quand j'ai pensé à le donner à qiita, c'était juste le moment de l'ad-care, donc je le posterai de manière appropriée.

Motivation

Lorsque M. Ninomiya d'Arashi a annoncé son mariage, Wikipedia était en train d'être détruit.

Bien sûr, à cette époque, <était "Nino Marriage" dans la tendance Twitter.

Alors j'ai pensé: "Peut-être que les tendances de Wikipédia et de Twitter sont liées: penser:".

Ce qui me rend heureux quand il y a une relation, c'est que je peux acquérir des connaissances spécifiques tout en supprimant les tendances simplement en regardant Wikipedia, et je pense que je peux en savoir plus sur les tendances que de regarder SNS.

Méthode

Obtenez les tendances Twitter avec l'API.

Programme pour obtenir les tendances japonaises sur Twitter avec l'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 japonais
    trend_words = []
    for d in trends[0]["trends"]:
        trend_words.append(d["name"])
    return trend_words

Gratter la page la plus récemment mise à jour de Wikipédia pour obtenir une liste.

Programme pour obtenir des mises à jour récentes de 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' #Si vous modifiez la limite, le nombre d'acquisitions changera
    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

Recherchez complètement chaque liste, et si les mots correspondent, comptez-les et divisez-les par la longueur de la liste à afficher.

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:] #Suppression des balises de hachage
        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() 

Puis-je utiliser le code de saut de ligne dans pythonista3?

résultat

一致なし

Parfois, ils ne correspondent pas du tout.

一致した

Un seul match. Le haut est la liste Wikipédia et le bas la tendance Twitter. Il y avait une correspondance pour "Toshinobu Kubota" avec un degré de correspondance de 0,002.

Considération

Cette fois, j'ai comparé Wikipedia et Twitter, Il n'y avait que 0 à 1 correspondances pour environ 500 Wikipédia et environ 50 tendances Twitter.

Même si je n'ai pas ressenti de pression, il y a eu au plus 4 matchs.

Ce résultat n'est pas tant lié à ceux-ci que Il y avait un problème avec la méthode d'évaluation.

Pour le moment, nous sommes en train de supprimer le hash tag de Twitter, mais cela ne suffit pas, Comme je l'ai dit au début, même si vous entrez dans une tendance telle que "Nino Marriage", elle devrait être enregistrée comme "Kazuya Ninomiya" sur Wikipedia. Bien sûr, cette méthode ne correspond pas.

Pour bien gérer cela, il peut être préférable d'extraire d'une manière ou d'une autre les mots associés de chaque mot de tendance (par exemple, recherche Google), puis de le comparer avec Wikipedia.

En outre, la valeur d'évaluation a été définie de sorte que la valeur maximale soit 1 pour le moment, mais la taille de la plus grande liste est effective pour la valeur d'évaluation, mais la taille de la plus petite liste (tendance dans ce cas) est complètement évaluée. Puisqu'il n'affecte pas, la formule d'évaluation n'est pas très bonne.

Impressions

J'avais une idée de sortir l'histoire de Wikipedia d'avant, mais je ne l'ai pas fait parce que c'était un problème, mais je suis content d'avoir pu le faire très facilement. La tendance de Twitter a également été préparée par API, et j'étais heureux de pouvoir le faire rapidement car j'avais déjà la clé API.

Si je continue à le faire à l'avenir, j'aimerais étudier plus en détail le degré d'accord en omettant les mots connexes.

Par conséquent, si vous savez à quel point cela est lié aux tendances, vous pourrez peut-être lire automatiquement les articles de Wikipédia et créer un site qui explique les tendances en tant que sous-produit.

référence

Mon article Pour se rappeler comment utiliser BS4

Recommended Posts

[Recherche gratuite] Y a-t-il un lien entre les mises à jour de Wikipédia et les tendances?
Y a-t-il une contradiction entre le parti qui protège le peuple de la NHK et le parti qui protège la NHK du peuple?
Quelle est la différence entre les liens symboliques et les liens durs?
Différence entre ps a et ps -a
Statistiques de probabilité dans Pokemon (test de non-corrélation) - Y a-t-il une corrélation entre la PC, le poids et la taille de Koiking?
Différence entre == et est en python
Y a-t-il un spécial dans scipy? ??
[Introduction à Python] Quelle est la différence entre une liste et un taple?