[PYTHON] Visualisation instantanée du calendrier de l'Avent Qiita 2019

Visualisation instantanée du calendrier de l'Avent Qiita 2019

Cet article est l'article du 20e jour du calendrier de l'avent All About Group (All About) 2019. C'est Noël quand je dors encore quelques fois. Maintenant que je suis adulte, je crois que le Père Noël viendra vraiment.

Ravi de vous rencontrer pour la première fois, c'est Akidukin14. Je suis généralement en charge de l'apprentissage automatique du système de distribution publicitaire d'AllAbout et de la visualisation des résultats d'analyse.

C'est la première fois que j'écris un calendrier de l'Avent, je vais donc essayer ce que j'ai imaginé.

Ce que j'ai fait (aperçu)

Visualisons les données de l'article dans chaque calendrier du calendrier de l'Avent Qiita (Uniquement pour les articles publiés sur Qiita ...)

Sommaire (sujets)

--Contexte

Contexte

(Au 12 / n 2019) ** Nombre de calendriers: 770 ** ** Nombre de participants: 13414 **

C'est la première fois que je participe au calendrier de l'Avent, mais la première chose à laquelle j'ai pensé était.

Vitre. Le nombre de calendriers. Volet des participants.

Où est le calendrier que vous souhaitez localiser ... ?? Je pensais que c'était mon motif.

Ce que j'ai fait (bulletin)

  1. Extrayez le texte de l'article du Calendrier de l'Avent
  2. Traitez le corps de l'article en langage naturel (écriture séparée)
  3. Visualisez avec WordCloud

résultat

Je publierai le résultat en premier. Si le résultat est suffisant, veuillez vérifier ici. (J'ai fait tellement de lumière, donc je pense que les résultats sont biaisés, je suis désolé ...)

Image 1

0_wordcloud.png

Image 2

1_wordcloud.png

Image 3

2_wordcloud.png

Image 4

3_wordcloud.png

Image 5

4_wordcloud.png

Image 6

5_wordcloud.png

Image 7

6_wordcloud.png

Image 8

7_wordcloud.png

Image 9

8_wordcloud.png

Image 10

9_wordcloud.png

Image 11

10_wordcloud.png

Image 12

11_wordcloud.png

Image 13

12_wordcloud.png

Image 14

13_wordcloud.png

Image 15

14_wordcloud.png

Image 16

15_wordcloud.png

Image 17

16_wordcloud.png

Image 18

17_wordcloud.png

Image 19

18_wordcloud.png

Image 20

19_wordcloud.png

Image 21

20_wordcloud.png

Image 22

21_wordcloud.png

Image 23

22_wordcloud.png

Image 24

23_wordcloud.png

Image 25

24_wordcloud.png

Image 26

25_wordcloud.png

Image 27

26_wordcloud.png

Image 28

27_wordcloud.png

Image 29

28_wordcloud.png

Image 30

29_wordcloud.png

Image 31

30_wordcloud.png

Image 32

31_wordcloud.png

1. Extrayez le texte de l'article du Calendrier de l'Avent

  1. Appuyez sur l'API Qiita de Python pour obtenir des données d'article

call_qiita_api


def call_qiita_api(header, per_page = None, query = None, page = None):
    ##désignation API
    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. Ceci est un calendrier de l'Avent! Acquérir des données en ciblant les articles qui semblent

regs_body_text


###Le code est vraiment sale...
def regs_body_text(text):
    ##Modèle de normalisation
    reg_pattern = re.compile('(\n|\t| | |-|~|-|`|:|;|_|\*|\!|\?|!|?|\+|\$|#|\[|\])')
    tmp = re.sub(reg_pattern, '', text.lower())
    target_type = re.compile('(Calendrier de l'Avent|adventcalendar)')
    if not re.search(target_type, tmp):
        return None, None
    calender_type = re.compile('(Cet article)\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('(Cet article|adventcalendar2019)', '', url_strings)
    return get_calender_type, tmp

2. Traitez le corps de l'article en langage naturel (écriture séparée)

  1. Spécifiez la partie du mot avec MeCab et divisez-la en mots

parse_text


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

def parse_text(text, parser = mecab):
    part = ['nom','動nom']
    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. Visualisez avec WordCloud

  1. Prend en charge le dessin dans la zone 9x9 à tout moment

make_wordcloud


##Visualisez avec 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()

URL de référence

Utilisation de l'API Qiita: https://qiita.com/arai-qiita/items/94902fc0e686e59cb8c5

Index AdventCalender

C'est le type de calendrier que j'ai utilisé cette fois. Je l'ai préparé comme index.

Image No AdventCalenderNo Nom du calendrier de l'Avent
1 0 1on1
1 1 2019 nouvel ingénieur diplômé
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 pour les débutants
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 et sans serveur1
3 24 aws débutant
3 25 azure
3 26 bitrise
4 27 blockchain
4 28 bosyu
4 29 brainpad
4 30 c
4 31 cakephp
4 32 marketing publicitaire calendargmo
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 nouveau diplômé
5 42 cyberagentdevelopers
5 43 dart
5 44 datadog
6 45 dena
6 46 calendrier de l'avent par dena20 ingénieur candidat diplômé dena20 nouveau diplômé
6 47 dena20 nouveau diplômé
6 48 deno
6 49 discord
6 50 diverse
6 51 django
6 52 groupe dmm
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 Parlez d'Ethercat
8 65 filemaker
8 66 firebase
8 67 flutter
8 68 flutter2
8 69 fork
8 70 foss4g
8 71 Personnes impliquées dans Freee Data
9 72 fun
9 73 fusic
9 74 partie fusique 2
9 75 git
9 76 globis
9 77 OGM 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 Le deuxième morceau de 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 partie vivante 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 Communications ntt
15 133 ntt techno cross
15 134 n lycée
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 partie 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 rouille partie 2
19 166 rouille partie 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 seul
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 groupe wano
23 205 webgl
23 206 workflow
24 207 xamarin
24 208 ingénieur yamap
24 209 zeals
24 210 zlab
24 211 Technologies zozo
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 Compagnie Kufu
25 219 Internet Sakura
25 220 Juste un groupe
25 221 N'importe quoi pour le moment
25 222 Ingénieur qui veut diffuser quelque chose
25 223 Regarder en arrière
25 224 Appareil Puri Puri
26 225 Eye Ridge
26 226 Vue Aso
26 227 Deck de lancement
26 228 Willgate
26 229 Équipage Web
26 230 Carrière M3
26 231 Communications AP
26 232 Clavier 1
26 233 Gifty
27 234 Putain d'application
27 235 Putain d'application 2
27 236 Cloudworks
27 237 Calendrier de l'Avent Shader
27 238 Cisco Systems Japan par des volontaires de Cisco
27 239 Système japonais
27 240 J's Academy
27 241 Haut-parleur intelligent
27 242 Test logiciel
28 243 Petite histoire de test de logiciel
28 244 Tremper
28 245 À propos de Data Science by Datamix Community
28 246 Structure des données et algorithme
28 247 Treta
28 248 Conception pilotée par domaine 1
28 249 Dwango
28 250 Groupe Nifty
28 251 Laboratoire non professionnel
29 252 Laboratoire des mains
29 253 Conception et technologie Fenril
29 254 Créer une photo
29 255 Futur
29 256 Futur 2
29 257 Plus plein
29 258 Mon Navi
29 259 Mixy 20 nouveau diplômé
29 260 Groupe Mixy
30 261 Série de nuages de motivation
30 262 Votre Meister
30 263 Unique Vision Co., Ltd.
30 264 Lux
30 265 Reitre
30 266 Développement personnel
30 267 mille
30 268 Collège national de technologie de Wu
30 269 Shinagawa
31 270 Dsl du laboratoire de science des données, Institut de technologie de Muroran
31 271 Session d'étude liée à Miyazaki IT
31 272 Technologies Cloud Fujitsu
31 273 Avocat dot com
31 274 Access Co., Ltd.
31 275 Amazonai by Knowledgecom exploité par Knowledge Communication Co., Ltd.
31 276 Comment avez-vous appris le machine learning par Nikkei xtech Business AI?
31 277 Plongez dans les outils d'apprentissage automatique de Nikkei xtech Business ai③
31 278 Club Yugen
32 279 Fukuoka jeune sierbc
32 280 Deuxième Dwango
32 281 OS fait maison
32 282 Traitement du langage naturel
32 283 Traitement du langage naturel 2
32 284 Ibaraki
32 285 Technologie d'autorisation de certification
32 286 Université de Kinki
32 287 Collège national de technologie de Suzuka

Recommended Posts

Visualisation instantanée du calendrier de l'Avent Qiita 2019
Transition des messages Qiita
LGTM en dehors de Qiita
Mémo Qiita de mes pensées
Visualisation des données par préfecture
Visualisation des compétences possédées [suite]
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python