Databricksの投稿記事から見る2023年の振り返り

今年も振り返ります。
![Screenshot 2023-12-29 at 7.48.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0d39e5e7-6bb9-0bf0-2220-bd745ba4b3a9.png)

昨年の振り返りはこちら。

https://qiita.com/taka_yayoi/items/5ec50a398e6525254c26

# 概要

今年から振り返りページが表示されるようになりましたが(ありがとうございます)、それまではメールでいただいていたのでそれらのデータとも比較してみます。

|  | 2021 | 2022 | 2023 |
|:--|:--|:--|:--|
| Contribution  |  851 | 1299  | 2434  |
| 書いた記事数  | 299  | 563  |  483 |
| 読まれた数  | 211,421  |  621,553 | 1,531,531  |
| いいねされた数  | 368  | 567  | 1468  |
| ストックされた数  | 369  | 342  | 962  |

可視化します。このサイズのデータセットならExcel使います。
![Picture1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f1fff25a-bfeb-ef74-422a-42d501e441f7.png)

執筆記事数は去年より減ってますが、それ以外は相当な増加率。そして、読まれた数は倍以上に。
![Picture2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/32b0c68d-c006-5bd2-113c-3187c00e1efa.png)

# 分析データの準備

[Qiita API](https://qiita.com/api/v2/docs)を使わせていただき、自分の記事データを取得します。

```py
from time import sleep
import requests

access_token = "<トークン>"

item_list_base_url = "https://qiita.com/api/v2/authenticated_user/items"
headers = { "Authorization": f"Bearer {access_token}" }

page = 1
per_page = 100
item_count = 1

sleep_time = 0.01

page_views = []

while True:
    
    # 記事一覧を取得
    item_list_url = f"{item_list_base_url}?page={page}&per_page={per_page}"
    items = requests.get(item_list_url, headers = headers)
    #print(items)
    items_body = items.json()

    if not len(items_body):
        break

    for entry in items_body:
        item_id = entry["id"]

        item_url = f"https://qiita.com/api/v2/items/{item_id}"

        # 記事詳細を取得
        item = requests.get(item_url, headers = headers)
        item_body = item.json()
        print(item)

        print(f"Get infos: {item_count} {page} {item_body['title']} {item_body['created_at']}")

        title = item_body["title"]
        url = item_body["url"]
        tags = item_body["tags"]
        created_at = item_body["created_at"]
        page_views_count = item_body["page_views_count"]
        likes_count = item_body["likes_count"]
        body = item_body["body"]
        rendered_body = item_body["rendered_body"]
        
        page_views.append({
            "id": item_id,
            "title": title,
            "page": page,
            "url": url,
            "tags": tags,
            "created_at": created_at,
            "page_views_count": page_views_count,
            "likes_count": likes_count,
            "body": body,
            "rendered_body": rendered_body
        })

        item_count += 1

        # 記事数に基づく中断
        if item_count == 500: break

        sleep(sleep_time)

    page += 1

    sleep(sleep_time)
```

```py
df = spark.createDataFrame(data=page_views)
df.printSchema()
display(df)
```
![Screenshot 2023-12-29 at 8.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0d5b92cd-4640-cacc-958b-ba00a21a059e.png)

テーブルに永続化します。

```py
(df.
  withColumn("created_at_ts", to_timestamp("created_at")).
  write.mode("overwrite").option("mergeSchema", "true").
  saveAsTable("takaakiyayoi_catalog.qiita_2023.taka_qiita")
)
```

件数を確認します。

```sql
%sql
SELECT COUNT(*) FROM takaakiyayoi_catalog.qiita_2023.taka_qiita WHERE Year(created_at) = 2023;
```
```
484
```

レポートいただいてから記事書いているので件数増えてますが合っているようです。

[前回](https://qiita.com/taka_yayoi/items/05d476c9e8847e4f3487)はタグしか可視化しませんでしたが、今回はタイトルからキーワードを抽出してワードクラウドも作りたいと思います。こちらを参考に。

https://qiita.com/taka_yayoi/items/3b5836853eac8ac248c1

クラスターにinitスクリプトとライブラリを追加します。今では[ワークスペースファイルでinitスクリプト](https://qiita.com/taka_yayoi/items/54c6c23d705c2b777b62#init%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)を作成できるので楽になりました。

(ほぼ全ての記事に入っている)Databricksを除く名詞のみを抽出するUDF(ユーザー定義関数)を作成します。

```py
import MeCab

def extract_words(text: str) -> str:
  """
  名詞のみを抽出するUDF
  :param text: Pyspark/SQLのカラム
  :return: 名詞を半角スペースで連結した文字列
  """
  
  word_str = ""
  
  mecab = MeCab.Tagger("-Ochasen")
  mecab.parseToNode('')
  node = mecab.parseToNode(text)
    
  while node:
    # 名詞のみを抽出
    if node.feature.split(",")[0] == "名詞" and node.surface != "Databricks":
      word = node.surface
      
      word_str = word_str + " " + word
      
    node = node.next
  
  return word_str

# Spark UDFとして関数を登録
spark.udf.register("extract_words", extract_words)
```

```sql
%sql
CREATE
OR REPLACE TABLE takaakiyayoi_catalog.qiita_2023.taka_qiita_2023 AS
SELECT
  *,
  extract_words(title) AS processed_title
FROM
  takaakiyayoi_catalog.qiita_2023.taka_qiita
WHERE
  Year(created_at) = 2023;
```

うまく抽出できました。これでワードクラウドを作成できます。
![Screenshot 2023-12-29 at 9.27.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0bbb4e9e-c24d-194a-86e6-a06550a8cc58.png)

# 詳細分析

Databricks SQLでダッシュボードを作成します。
![Screenshot 2023-12-29 at 9.28.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e4a13379-14b0-7f16-17af-a90ba0b8b6ec.png)

## 投稿日の分布

毎度のことながらほぼ毎日書いてます。
![Screenshot 2023-12-29 at 9.29.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3a699e48-1533-2add-65c7-77e358fc64be.png)

## ワードクラウド

ぱっと見、LLM、言語モデル、RAGなどのキーワードが目立ちます。それ以外にはUnity CatalogのCatalogなど。
![Screenshot 2023-12-29 at 9.37.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bb825560-463a-8a7d-5713-84c0b42bb813.png)


## 記事の参照回数、いいねの数

3月、4月のスパイクが顕著です。
![Screenshot 2023-12-29 at 9.31.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2241d0bd-1d52-c66e-8a6f-f558c5678556.png)

記事を確認してみるとオープンソースDollyの記事、GPTの論文の翻訳、LLMを試してみた系が上位を占めています。まさに今年は生成AI、大規模言語モデル(LLM)と言える年だった訳で、私自身興奮しながらこれらの記事を書いていたのでした。ITエンジニアとして現場で働いている時にこのようなテクノロジーシフトに立ち会えたことは非常に嬉しいです。
![Screenshot 2023-12-29 at 9.31.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f25f3444-ec3f-a9a9-1d14-25014fabd56f.png)


# ピックアップ記事


## [翻訳] GPTs are GPTs: An Early Look at the Labor Market Impact Potential of Large Language Models (前編)

**投稿日 2023年03月21日**

https://qiita.com/taka_yayoi/items/1bdbb59946ebff78a689

GPT-4の話が出てから色々OpenAIの論文を読み始めました。こちらもその一つで翻訳したものとなっています。ボリュームが多かったので前後編にしています。こちらは生成AIがアメリカの労働市場にどのような影響を与えるのかをまとめたものとなっており、ほぼ全ての職業が影響を受けるという衝撃的な内容でした。しかも、提供側がここまで考察していることにも驚きました。

他にも以下の論文を訳していました。

https://qiita.com/taka_yayoi/items/3ac9cf3565fb3f389178

https://qiita.com/taka_yayoi/items/521b6d07611869765415

https://qiita.com/taka_yayoi/items/4dca63f26a654c296588

## Hello Dolly: オープンなモデルでChatGPTの魔法を民主化する

**投稿日 2023年03月25日**

https://qiita.com/taka_yayoi/items/e9c895c169da652c6efb

3月にGPT-4のパフォーマンスが世界を席巻した頃は「すごいらしい」くらいの認知しかしていなかったのですが、社内では色々と動きがありました。いきなり「オープンソース版LLM Dollyだ！」と発表されてひっくり返った次第です。

## Free Dolly: 世界初の真にオープンな指示でチューニングされたLLM

**投稿日 2023年04月13日**

https://qiita.com/taka_yayoi/items/59f0ba1a07c620a70a75

[上の記事](#hello-dolly-オープンなモデルでchatgptの魔法を民主化する)が最初のリリースだったのですが、バージョン1では商用利用できないという制限がありましたが、商用利用できるようになったことを発表したのがこちらのリリースでした。この発表は日本国内でも好意的に受け取っていただけたのを覚えています。

## 大規模言語モデルを活用したDatabricksのQ&A bot構築のウォークスルー

**投稿日 2023年05月27日**

https://qiita.com/taka_yayoi/items/c8c612b18ebc9f5cae8c

そして、Databricksの提供機能自体もどんどん生成AI自身や生成AIを用いたシステムの開発をサポートしていくようになります。今でも大きな人気を得ているRAG(Retrieval Augumented Generation)もこの頃からサポートし始めています。

日本語に対応したものも書きました。

https://qiita.com/taka_yayoi/items/43302d79369a36b66ee4

## 今さら聞けないPython - pandasを用いたデータ分析

**投稿日 2023年03月28日**

https://qiita.com/taka_yayoi/items/3bb88b204f47bdf091eb

LLM以外でPVが多かったのがこちらの記事です。以前実施したウェビナーのサマリー版です。何記事かに分けましたがpandasの記事が一番アクセスいただいています。やはりpandas人気すごいです。

以下の関連記事も結構アクセスいただいています。

https://qiita.com/taka_yayoi/items/bb96e1be88959902cb17

https://qiita.com/taka_yayoi/items/08d3166714b53b9acc7b

https://qiita.com/taka_yayoi/items/5415db284b96c7c60d44

## Databricksアシスタントを試してオッサンびっくり

**投稿日 2023年07月21日**

https://qiita.com/taka_yayoi/items/810bcdf589a33ee8c828

この業界で20年以上働いているまごうことなきオッサンではありますが、LLMがデータ分析環境に組み込まれることでこれほど作業方法が変わるのかと驚いたことをつらつら書きました。10年後のコーディングってどうなっているんでしょうね。

## [2023年12月版] Databricksとは何か？

**投稿日 2023年12月02日**

https://qiita.com/taka_yayoi/items/91dde16b275c279ad2a2

そして、Databricksのプラットフォームの名称もレイクハウスからデータインテリジェンスプラットフォームへと変わりました。そのタイミングでこちらを書きました。これはレイクハウスが生成AIによって進化したことを意味しています。プレビュー中の機能もありますが、上述のアシスタントやLLMOpsを実現するための機能がどんどん提供されていきます！

# まとめ

あと、[Databricksの日本語マニュアル](https://qiita.com/taka_yayoi/items/fcf9ab81ad8b27551e8b)が公開されたこともあって、マニュアルの翻訳の頻度は減って代わりにオリジナルの記事が増えた(と言っても試してみた系が多いですが)のも今年の変化ですかね。

兎にも角にも、生成AI特に自分の場合は大規模言語モデルの記事をたくさん書いた年となりました。来年も執筆して参ります！

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)