[PYTHON] Erstellen Sie die Word Cloud von Qiita aus Ihrem Browserverlauf

qiita.png

Ich habe so eine Wortwolke gemacht. Ich habe einfach den Titel von qiita.com aus dem Browserverlauf extrahiert, den Titel mit Mecab geteilt und nur die Nomenklatur in Word Cloud konvertiert, um die Felder zu visualisieren, an denen ich interessiert war, die Felder, die ich gesucht habe usw. Es war sehr interessant, meine Geschichte zu visualisieren, also probieren Sie es bitte aus.

Https://github.com/amueller/word_cloud als Word Cloud-Bibliothek zur Visualisierung. Bereiten Sie Mecab für die morphologische Analyse vor, indem Sie auf Bereitstellen der morphologischen Analyse-Engine MeCab in Python3 (Version März 2016) verweisen.

Unter MacOS befindet sich Safari in "~ / Library / Safari / History.db" und Chrome in "~ / Library / Application \ Support / Google / Chrome / Default / History". Kopieren Sie sie daher wie folgt. An den gleichen Ort wie das Skript. Selbst wenn Sie diesen Pfad direkt als Pfad der Datenbank angeben, ohne ihn zu kopieren, kann er aufgrund eines Lesefehlers möglicherweise nicht gelesen werden. Daher ist es sicher, ihn zu kopieren, da das Risiko einer Beschädigung der Datenbank während des Vorgangs besteht.

Das Skript zum Erstellen von WordCloud of Qiita aus dem Browserverlauf lautet übrigens wie folgt.

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

#db kopiert das Original und verwendet
# 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('') #Lass dich nicht freigeben
def get_nouns(text):
    nouns = []
    node = MECAB.parseToNode(text)
    while node:
        if 'Substantiv' 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 = ['Ding', 'Dies', 'Zum', 'Wann', '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()

Es stellte sich heraus, dass es so etwas war. Der Verlauf von Safari und Chrome wird in sqlite3 gespeichert, sodass die Daten entsprechend abgerufen werden. Leider sind die Schemata völlig unterschiedlich, daher muss SQL getrennt sein. Da der Titel des Qiita-Artikels immer die Zeichenfolge "Qiita" enthält, wird Qiita in Word Cloud sehr stark angezeigt. Fügen Sie daher "qiita" in Kleinbuchstaben zu stop_words hinzu, um es zu entfernen. Sie können. Persönlich kann ich es eindeutig als Qiita identifizieren, also lasse ich es.

Auch hier war es sehr interessant, meine Geschichte zu visualisieren, also probieren Sie es bitte aus!

Recommended Posts

Erstellen Sie die Word Cloud von Qiita aus Ihrem Browserverlauf
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
So machen Sie Word Cloud-Zeichen monochromatisch
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Verschrotten Sie Ihren Qiita-Artikel, um eine Wortwolke zu erstellen
Ich habe ein Tool erstellt, um eine Wortwolke aus Wikipedia zu erstellen
Wenn Sie versuchen, eine Wortwolke mit Kommentaren von WEB-Manga zu erstellen, ist es interessant, visuell zu verstehen, um welche Art von Manga es sich handelt.
Verwenden Sie Discord Bot, um .eml von Ihrem Smartphone zu lesen
Versuchen Sie, Nifty Cloud MQTT von C4SA aus zu betreiben
Machen wir einen Jupyter-Kernel
Greifen Sie über einen Browser auf den Entwicklungsserver von Django zu
Versuchen Sie etwas wie C # LINQ zu machen