[PYTHON] Créez le nuage de mots de Qiita à partir de l'historique de votre navigateur

qiita.png

J'ai créé un nuage de mots comme celui-ci. J'ai simplement extrait le titre de qiita.com de l'historique du navigateur, divisé le titre avec Mecab et converti uniquement la nomenclature en Word Cloud pour visualiser les champs qui m'intéressaient, les champs que j'ai recherchés, etc. C'était assez intéressant de visualiser mon histoire, alors essayez-le.

Https://github.com/amueller/word_cloud en tant que bibliothèque Word Cloud pour la visualisation. Pour l'analyse morphologique, préparez Mecab en vous référant à Rendre le moteur d'analyse morphologique MeCab disponible en Python3 (version de mars 2016).

Pour MacOS, Safari est dans ~ / Library / Safari / History.db et Chrome est dans ~ / Library / Application \ Support / Google / Chrome / Default / History, copiez-les comme suit. Au même endroit que le script. Même si vous spécifiez ce chemin directement comme chemin de db sans le copier, il peut ne pas être lu en raison d'une erreur de lecture, il est donc prudent de le copier compte tenu du risque de corruption de la base de données dans l'opération.

À propos, le script pour créer WordCloud de Qiita à partir de l'historique du navigateur est le suivant.

import sqlite3
from enum import Enum
import MeCab
from wordcloud import WordCloud

#db copie l'original et utilise
# Safari History
# => ~/Library/Safari/History.db
# Chrome History
# => ~/Library/Application\ Support/Google/Chrome/Default/History
SAFARI_HISTORY = 'History.db'
CHROME_HISTORY = 'History'


class Browser(Enum):
    Safari = 1
    Chrome = 2


MECAB = MeCab.Tagger('-Ochasen')
MECAB.parse('') #Ne soyez pas libéré
def get_nouns(text):
    nouns = []
    node = MECAB.parseToNode(text)
    while node:
        if 'nom' in node.feature:
            nouns.append(node.surface)
        node = node.next
        if node is None:
            break
    return nouns


def get_db_config(browser):
    if browser == Browser.Safari:
        dbname = SAFARI_HISTORY
        sql = 'select v.title from history_items i join history_visits v on v.history_item = i.id and i.url like "http://qiita.com%"  group by i.url'
    elif browser == Browser.Chrome:
        dbname = CHROME_HISTORY
        sql = 'select u.title from urls u where u.url like "http://qiita.com%" group by u.url'
    else:
        raise ValueError('invalid argument')
    return (dbname, sql)


def get_qiitas(browser):
    qiitas = []
    (dbname, sql) = get_db_config(browser)
    for row in sqlite3.connect(dbname).cursor().execute(sql):
        if row[0]:
            qiitas.append(row[0].strip())
    return qiitas


def create_wordcloud(text, output):
    fpath = '/Library/Fonts/Hiragino Marugo ProN W4.ttc'
    stop_words = ['chose', 'cette', 'Pour', 'Quand', 'Yo']
    wordcloud = WordCloud(background_color='white', font_path=fpath, width=900, height=500,
                          stopwords=set(stop_words)).generate(text)
    wordcloud.to_file(output)


def main():
    qiita_nouns = []
    for browser in [Browser.Chrome, Browser.Safari, ]:
        for title in get_qiitas(browser):
            qiita_nouns.extend(get_nouns(title))
    create_wordcloud(','.join(qiita_nouns), 'qiita.png')


if __name__ == '__main__':
    main()

Il s'est avéré être quelque chose comme ça. L'historique de Safari et de Chrome est stocké dans sqlite3, de sorte que les données sont extraites de manière appropriée. Malheureusement, les schémas sont complètement différents, donc sql doit être séparé. De plus, puisque le titre de l'article Qiita contient toujours la chaîne "Qiita", Qiita est affiché très fortement dans Word Cloud, alors ajoutez "qiita" en lettres minuscules à stop_words pour le supprimer. Vous pouvez. Personnellement, je peux clairement l'identifier comme Qiita, alors je le laisse.

Encore une fois, c'était assez intéressant de visualiser mon histoire, alors essayez-le!

Recommended Posts

Créez le nuage de mots de Qiita à partir de l'historique de votre navigateur
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Comment rendre les caractères de Word Cloud monochromatiques
Essayez de créer votre propre AWS-SDK avec bash
Racler votre article Qiita pour créer un nuage de mots
J'ai créé un outil pour créer un nuage de mots à partir de wikipedia
Si vous essayez de créer un nuage de mots avec des commentaires de mangas WEB, il est intéressant de comprendre visuellement de quel genre de manga il s'agit.
Rendre possible la lecture de .eml depuis un smartphone à l'aide d'un bot Discord
Essayez d'utiliser Nifty Cloud MQTT à partir de C4SA
Faisons un noyau jupyter
Accéder au serveur de développement de Django depuis un navigateur
Essayez de créer quelque chose comme C # LINQ