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