今回は、データベース内に保存された文章のテキストデータから単語の出現頻度を使って話題になっているトピックを抽出する、という処理を行ってみます。
- テキストを形態素解析する
- 形態素解析した結果をJSONBで取得する
- JSONBデータを対象に集計処理を行う
- 上記すべてをサーバサイドで実行する
■データの準備
今回も東京カレンダーの「東京女子図鑑」からの文章をサンプルとして使ってみます。
- 31歳女性がするべき、銀座での“上質な”暮らし。大人の女の流儀とは?(1/2)[東京カレンダー]
https://tokyo-calendar.jp/article/4640
snaga=# \d docs Table "public.docs" Column | Type | Modifiers ---------+---------+----------- docid | integer | not null doctext | text | Indexes: "docs_pkey" PRIMARY KEY, btree (docid) snaga=# SELECT docid, length(doctext) FROM docs; docid | length -------+-------- 1 | 4423 (1 row) snaga=# SELECT docid, substring(doctext,0,60) AS doctext FROM docs; docid | doctext -------+--------------------------------------------------------------------------------------------------------------------- 1 | 20代後半頃から、同期が1人また1人と、会社を辞めていきました。辞める理由はいろいろありますが、病んでしまった子もいれ (1 row) snaga=#
■形態素解析を行うユーザ定義関数を作成する
まず、テキストを入力として受け取り、形態素解析した結果をJSONB型として返却するユーザ定義関数を作成します。