非構造化データとCortex LLM関数
概要
PDF文書を解析し,Cortex関数を使用して情報を抽出してテーブルに記録する.その上で,別のCortex関数を使ってテーブルのデータ行にラベルを付ける.それを元に分析クエリを作成し,Streamlitで可視化を行う.最後に,他の3つのCortex関数の概要を簡単に紹介する.
非構造化データとは何か
非構造化データとは,事前に定義されたデータモデルやスキーマに対応しない情報を指す.例として,テキストデータ,画像,動画,音声などが含まれる.Snowflakeは,これらのデータのアクセス,共有,処理を支援する機能を提供する.
やること
- Cortex LLM関数を使ってPDF文書を解析し,テーブルに情報を記録する.
- Cortex LLM関数を使ってデータ行にラベルを付ける.
- Streamlitにより情報を分析して可視化する.
これらの作業を通じて,非構造化データを制御するための基本的なテクニックを習得する.
SnowflakeのCortex関数
Cortex LLM関数
Snowflake Cortex LLM関数は,非構造化データの抽出,分析,生成を行うSQL関数である.これにより,非構造化データから情報をワンステップで抽出し,簡単な操作で実用的な情報に変換できる.
使用する関数は次の通り.
-
PARSE_DOCUMENT()
: PDF文書からテキストを抽出する.
テキスト抽出の流れ
- ステージにあるPDFファイルのリストをSQLを使って収集する.
-
PARSE_DOCUMENT()
関数を実行し,PDF文書からテキストを抽出する. - 抽出したテキストを新しいテーブルに書き込む.
実装ステップ
PDF解析
- SnowflakeのUIで以下のSQLクエリを実行し,ステージにあるPDFファイルをリストアップする.
SELECT METADATA$FILENAME
FROM TABLE(
INFER_SCHEMA(
LOCATION=>'@my_stage/pdf_files/',
FILE_FORMAT=>'(TYPE=>CSV)'
)
);
-
PARSE_DOCUMENT()
関数を用いて,PDFからテキストを抽出する.
SELECT PARSE_DOCUMENT($1) AS EXTRACTED_TEXT
FROM @my_stage/pdf_files;
- 抽出したテキストを新しいテーブルに挿入する.
CREATE OR REPLACE TABLE extracted_texts (
filename STRING,
content STRING
);
INSERT INTO extracted_texts
SELECT METADATA$FILENAME, PARSE_DOCUMENT($1)
FROM @my_stage/pdf_files;
ラベル付け
-
EXTRACTED_TEXTS
テーブルの各行にラベルを付与する.
CREATE OR REPLACE TABLE labeled_texts AS
SELECT filename, content,
CASE
WHEN content LIKE '%重要%' THEN 'High Priority'
WHEN content LIKE '%確認%' THEN 'Medium Priority'
ELSE 'Low Priority'
END AS label
FROM extracted_texts;
Streamlitによる可視化
- Streamlitアプリを作成するために,次のPythonコードを使用する.
import streamlit as st
import pandas as pd
from snowflake.connector import connect
# Snowflake接続設定
conn = connect(
user='USERNAME',
password='PASSWORD',
account='ACCOUNT',
)
# データ取得
query = 'SELECT * FROM labeled_texts;'
with conn.cursor() as cur:
cur.execute(query)
rows = cur.fetchall()
# データフレームに変換
data = pd.DataFrame(rows, columns=['filename', 'content', 'label'])
# Streamlitで表示
st.title('ラベル付きテキストの可視化')
st.dataframe(data)
- Streamlitアプリを実行して結果を確認する.
streamlit run app.py
他のCortex関数の紹介
以下の3つのCortex関数を簡単に紹介する.
-
ANALYZE_TEXT()
- テキストデータを解析し,感情分析やキーフレーズ抽出を行う.
-
GENERATE_TEXT()
- 指定されたプロンプトに基づいて新しいテキストを生成する.
-
SUMMARIZE_TEXT()
- 長いテキストを要約し,重要なポイントを抽出する.
これらの関数は,非構造化データの高度な処理に役立つ.