[PYTHON] Sofortige Visualisierung des Qiita Adventskalenders 2019

Sofortige Visualisierung des Qiita Adventskalenders 2019

Dieser Artikel ist der 20. Tagesartikel des All About Group (All About) Adventskalenders 2019. Es ist Weihnachten, wenn ich noch ein paar Mal schlafe. Jetzt, wo ich erwachsen bin, glaube ich, dass der Weihnachtsmann wirklich kommen wird.

Schön, Sie zum ersten Mal zu treffen, das ist Akidukin14. Normalerweise bin ich für das maschinelle Lernen des Werbeverteilungssystems von AllAbout und die Visualisierung der Analyseergebnisse verantwortlich.

Ich schreibe zum ersten Mal einen Adventskalender, also werde ich versuchen, was ich mir ausgedacht habe.

Was ich getan habe (Übersicht)

Lassen Sie uns die Artikeldaten in jedem Kalender des Qiita-Adventskalenders visualisieren (Nur für Artikel auf Qiita ...)

Inhalt (Themen)

--Hintergrund

Hintergrund

(Stand 12 / n 2019) ** Anzahl der Kalender: 770 ** ** Teilnehmerzahl: 13.414 **

Ich nehme zum ersten Mal am Adventskalender teil, aber das erste, woran ich dachte, war.

Feld. Die Anzahl der Kalender. Teilnehmerbereich.

Wo ist der Kalender, den Sie genau bestimmen möchten ... ?? Ich dachte das wäre mein Motiv.

Was ich getan habe (Bulletin)

  1. Extrahieren Sie den Artikeltext des Adventskalenders
  2. Verarbeiten Sie den Artikelkörper in natürlicher Sprache (separate Schrift)
  3. Visualisieren Sie mit WordCloud

Ergebnis

Ich werde das Ergebnis zuerst veröffentlichen. Wenn das Ergebnis ausreicht, überprüfen Sie bitte hier. (Ich habe so viel Licht gemacht, also denke ich, dass die Ergebnisse voreingenommen sind, tut mir leid ...)

Bild 1

0_wordcloud.png

Bild 2

1_wordcloud.png

Bild 3

2_wordcloud.png

Bild 4

3_wordcloud.png

Bild 5

4_wordcloud.png

Bild 6

5_wordcloud.png

Bild 7

6_wordcloud.png

Bild 8

7_wordcloud.png

Bild 9

8_wordcloud.png

Bild 10

9_wordcloud.png

Bild 11

10_wordcloud.png

Bild 12

11_wordcloud.png

Bild 13

12_wordcloud.png

Bild 14

13_wordcloud.png

Bild 15

14_wordcloud.png

Bild 16

15_wordcloud.png

Bild 17

16_wordcloud.png

Bild 18

17_wordcloud.png

Bild 19

18_wordcloud.png

Bild 20

19_wordcloud.png

Bild 21

20_wordcloud.png

Bild 22

21_wordcloud.png

Bild 23

22_wordcloud.png

Bild 24

23_wordcloud.png

Bild 25

24_wordcloud.png

Bild 26

25_wordcloud.png

Bild 27

26_wordcloud.png

Bild 28

27_wordcloud.png

Bild 29

28_wordcloud.png

Bild 30

29_wordcloud.png

Bild 31

30_wordcloud.png

Bild 32

31_wordcloud.png

1. Extrahieren Sie den Artikeltext des Adventskalenders

  1. Klicken Sie in Python auf die Qiita-API, um Artikeldaten abzurufen

call_qiita_api


def call_qiita_api(header, per_page = None, query = None, page = None):
    ##API-Bezeichnung
    get_items_api = 'https://qiita.com/api/v2/items'
    params = {'per_page' : per_page
        , 'query' : query
        , 'page' : page}
    datas = requests.get(get_items_api, params = params, headers = header)
    return datas
  1. Dies ist ein Adventskalender! Erfassen Sie Daten, indem Sie auf Artikel abzielen, die anscheinend vorhanden sind

regs_body_text


###Der Code ist wirklich schmutzig...
def regs_body_text(text):
    ##Normalisierungsmuster
    reg_pattern = re.compile('(\n|\t| | |-|~|-|`|:|;|_|\*|\!|\?|!|?|\+|\$|#|\[|\])')
    tmp = re.sub(reg_pattern, '', text.lower())
    target_type = re.compile('(Adventskalender|adventcalendar)')
    if not re.search(target_type, tmp):
        return None, None
    calender_type = re.compile('(Dieser Beitrag)\w+?(adventcalendar2019)')
    if not re.search(calender_type, tmp):
        return None, None,
    url_strings = re.search(calender_type, tmp).group()
    get_calender_type = re.sub('(Dieser Beitrag|adventcalendar2019)', '', url_strings)
    return get_calender_type, tmp

2. Verarbeiten Sie den Artikelkörper in natürlicher Sprache (separate Schrift)

  1. Geben Sie den Teil des Wortes mit MeCab an und teilen Sie ihn in Wörter

parse_text


mecab = MeCab.Tagger('-Owakati')
mecab.parse('')

def parse_text(text, parser = mecab):
    part = ['Substantiv','動Substantiv']
    parsed_text = []
    t = parser.parseToNode(text)
    while t:
        parts = t.feature.split(',')
        if parts[0] in part:
            parsed_text.append(t.surface)
        t = t.next
    return parsed_text

3. Visualisieren Sie mit WordCloud

  1. Unterstützt jederzeit das Zeichnen im 9x9-Bereich

make_wordcloud


##Visualisieren Sie mit WordCloud
keys_len = len(dataset.keys())
plot_picture = int(keys_len / 9) + 1
plot_area = np.arange(0,9,1).reshape(3,3)
keys = sorted(dataset.keys())
fp = FontProperties(fname = fonts)
k = 0
for pp in range(plot_picture):
    fig,axes = plt.subplots(nrows = 3, ncols = 3, figsize = (10,10))
    for i in range(9):
        sys.stdout.write('\r {}/{}'.format(k, keys_len))
        target_key = keys[k]
        wc = wordcloud.WordCloud(
                font_path = fonts
                , prefer_horizontal = 1
                , max_words = 300
                , background_color = 'white'
                , colormap = 'RdYlBu'
                , contour_color='pink'
                , width = 750
                , height = 750)
        n,m = [x.item() for x in np.where(plot_area == i)]
        plot_data = ' '.join([y for x in dataset[target_key]['parsed_text'] for y in x if not check_word(y)])
        wc_gen = wc.generate(plot_data)
        axes[n,m].imshow(wc_gen, interpolation = 'bilinear')
        axes[n,m].set_title('AdventCalendar : {}'.format(target_key), FontProperties = fp, color = 'gray', fontsize = 10)
        axes[n,m].axis('off')
        k += 1
    plt.subplots_adjust(left=0.1, right=0.95, bottom=0.1, top=0.95)
    plt.savefig('{}_wordcloud.png'.format(pp))
    plt.close()

Referenz-URL

Verwenden der Qiita-API: https://qiita.com/arai-qiita/items/94902fc0e686e59cb8c5

AdventCalender Index

Dies ist die Art von Kalender, die ich dieses Mal verwendet habe. Ich habe es als Index vorbereitet.

Bild-Nr AdventCalenderNo Name des Adventskalenders
1 0 1on1
1 1 2019 neuer Diplomingenieur
1 2 3dsensor
1 3 access
1 4 airccar
1 5 aizu
1 6 akerun
1 7 alh
1 8 alibabacloud
2 9 amazoneks
2 10 amazoneks2
2 11 android
2 12 android2
2 13 Android für Anfänger
2 14 angular
2 15 angular2
2 16 ansible
2 17 ansible2
3 18 appsscript
3 19 arduino
3 20 asoview
3 21 aws
3 22 awsamplify
3 23 awslambda und serverless1
3 24 aws Anfänger
3 25 azure
3 26 bitrise
4 27 blockchain
4 28 bosyu
4 29 brainpad
4 30 c
4 31 cakephp
4 32 calendargmo Anzeigenmarketing
4 33 camphor
4 34 cbcloud
4 35 circleci
5 36 classi
5 37 clojure
5 38 codebaseokinawa
5 39 conoha
5 40 css
5 41 cyberagent20 neuer Absolvent
5 42 cyberagentdevelopers
5 43 dart
5 44 datadog
6 45 dena
6 46 Adventskalender von dena20 Absolvent Kandidat Ingenieur dena20 neuer Absolvent
6 47 dena20 neuer Absolvent
6 48 deno
6 49 discord
6 50 diverse
6 51 django
6 52 dmm Gruppe
6 53 dotfiles
7 54 dsl
7 55 dtp
7 56 eccube
7 57 elasticstack
7 58 elixir
7 59 elm
7 60 elm2
7 61 emacs
7 62 enebular
8 63 engineeringmanager
8 64 Sprechen Sie über Ätherkatze
8 65 filemaker
8 66 firebase
8 67 flutter
8 68 flutter2
8 69 fork
8 70 foss4g
8 71 Personen, die an der Freigabe von Daten beteiligt sind
9 72 fun
9 73 fusic
9 74 Fusic Teil 2
9 75 git
9 76 globis
9 77 GVO Pepabo
9 78 go
9 79 go3
9 80 go4
10 81 go5
10 82 go6
10 83 go7
10 84 goodpatch
10 85 hamee
10 86 haskell
10 87 heroku
10 88 houdiniapprentice
10 89 hrtech
11 90 ios2
11 91 iotlt
11 92 iplug
11 93 ipv6
11 94 Das zweite Stück von iq1
11 95 iridge
11 96 jamstack
11 97 java
11 98 javascript
12 99 javascript2
12 100 kaggle
12 101 kayac
12 102 kintone
12 103 kintone2
12 104 klab
12 105 klabengineer
12 106 kubernetes
12 107 kubernetes2
13 108 kubernetes3
13 109 kyash
13 110 kyotouniversity
13 111 laravel
13 112 laravel2
13 113 libreoffice
13 114 lifull
13 115 Lebensabschnitt 3
13 116 makeit
14 117 maya
14 118 microad
14 119 microsoftazuretech
14 120 microsoftpowerbi
14 121 Misoca Yayoi
14 122 mohikanz
14 123 mysql
14 124 ncc
14 125 nem
15 126 nervesjp
15 127 nestjs
15 128 newspicks
15 129 nijibox
15 130 nodered
15 131 northdetail
15 132 ntt Kommunikation
15 133 Ntt Techno Cross
15 134 n High School
16 135 obniz
16 136 office365
16 137 oicitcreateclub
16 138 openandreproduciblescience
16 139 opensaasstudio
16 140 opttechnologies
16 141 oraclecloudinfrastructure
16 142 othlotech
16 143 pandoc
17 144 pathee
17 145 perl
17 146 php
17 147 plaid
17 148 ponos
17 149 pwa
17 150 pyladiesjapan
17 151 python
17 152 Python Teil 3
18 153 qiitagithubactions
18 154 qt
18 155 qualiarts
18 156 r
18 157 react
18 158 react2
18 159 reactnative
18 160 retty
18 161 rpa
19 162 ruby
19 163 runteq
19 164 rust
19 165 Rost Teil 2
19 166 Rost Teil 3
19 167 salesforceplatform
19 168 sansan
19 169 sap
19 170 satysfi
20 171 sbai
20 172 scala
20 173 sensy
20 174 sfc
20 175 sfcrg
20 176 siv3d
20 177 slack
20 178 smarthr
20 179 snowrobin
21 180 soracom
21 181 speee
21 182 splunk
21 183 sra
21 184 sre
21 185 studioztech
21 186 swift
21 187 terraform
21 188 tjbot
22 189 tokyocityuniversity
22 190 Tomowarkar allein
22 191 typescript
22 192 unity
22 193 unity2
22 194 unity3
22 195 valu
22 196 vexperts
22 197 vim
23 198 vim2
23 199 visualstudiocode
23 200 vrchat
23 201 vtubertech1
23 202 vue2
23 203 wanogroup
23 204 Wano-Gruppe
23 205 webgl
23 206 workflow
24 207 xamarin
24 208 Yamap Ingenieur
24 209 zeals
24 210 zlab
24 211 zozo Technologies
24 212 zozo Technologies 1
24 213 zozo Technologies 2
24 214 zozo Technologies 3
24 215 zozo Technologies 4
25 216 zozo Technologies 5
25 217 Uluru
25 218 Kufu Company
25 219 Sakura Internet
25 220 Nur eine Gruppe
25 221 Vorerst alles
25 222 Ingenieur, der etwas verbreiten will
25 223 Zurückblicken
25 224 Puri Puri Appliance
26 225 Augenkamm
26 226 Aso View
26 227 Inception Deck
26 228 Willgate
26 229 Web-Crew
26 230 M3 Karriere
26 231 AP Communications
26 232 Tastatur 1
26 233 Gifty
27 234 Verdammte App
27 235 Verdammte App 2
27 236 Cloudworks
27 237 Shader Adventskalender
27 238 Cisco Systems Japan von Freiwilligen von Cisco
27 239 Japanisches System
27 240 Js Akademie
27 241 Intelligenter Lautsprecher
27 242 Softwaretest
28 243 Software-Test kleine Geschichte
28 244 Tauchen
28 245 Über Data Science von Datamix Community
28 246 Datenstruktur und Algorithmus
28 247 Treta
28 248 Domänengesteuertes Design 1
28 249 Dwango
28 250 Nifty Group
28 251 Non-Pro Lab
29 252 Hands Lab
29 253 Fenril Design und Technologie
29 254 Foto erstellen
29 255 Zukunft
29 256 Zukunft 2
29 257 Voller
29 258 Mein Navi
29 259 Mixy 20 neue Absolventen
29 260 Gemischte Gruppe
30 261 Motivationswolken-Serie
30 262 Dein Meister
30 263 Unique Vision Co., Ltd.
30 264 Lux
30 265 Reitre
30 266 Persönliche Entwicklung
30 267 tausend
30 268 Wu National College of Technology
30 269 Shinagawa
31 270 DSL des Data Science Laboratory, Muroran Institute of Technology
31 271 Miyazaki es verwandte Studiensitzung
31 272 Fujitsu Cloud Technologies
31 273 Rechtsanwalt dot com
31 274 Access Co., Ltd.
31 275 Amazonai von Knowledgecom, betrieben von Knowledge Communication Co., Ltd.
31 276 Wie haben Sie maschinelles Lernen von Nikkei xtech Business ai② gelernt?
31 277 Tauchen Sie ein in maschinelles Lernen von Nikkei xtech Business ai③
31 278 Yugen Club
32 279 Fukuoka junge sierbc
32 280 Zweiter Dwango
32 281 Selbst gemachtes Betriebssystem
32 282 Verarbeitung natürlicher Sprache
32 283 Verarbeitung natürlicher Sprache 2
32 284 Ibaraki
32 285 Zertifizierungsautorisierungstechnologie
32 286 Kinki Universität
32 287 Suzuka National College of Technology

Recommended Posts

Sofortige Visualisierung des Qiita Adventskalenders 2019
Übergang von Qiita-Beiträgen
LGTM außerhalb von Qiita
Qiita Memo meiner Gedanken
Visualisierung von Daten nach Präfektur
Visualisierung besessener Fähigkeiten [Fortsetzung]
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen