0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SnowflakeAdvent Calendar 2024

Day 18

ゼロから始めるSnowflake(10/10)

Last updated at Posted at 2024-12-23

非構造化データとCortex LLM関数

概要

PDF文書を解析し,Cortex関数を使用して情報を抽出してテーブルに記録する.その上で,別のCortex関数を使ってテーブルのデータ行にラベルを付ける.それを元に分析クエリを作成し,Streamlitで可視化を行う.最後に,他の3つのCortex関数の概要を簡単に紹介する.

非構造化データとは何か

非構造化データとは,事前に定義されたデータモデルやスキーマに対応しない情報を指す.例として,テキストデータ,画像,動画,音声などが含まれる.Snowflakeは,これらのデータのアクセス,共有,処理を支援する機能を提供する.

やること

  1. Cortex LLM関数を使ってPDF文書を解析し,テーブルに情報を記録する.
  2. Cortex LLM関数を使ってデータ行にラベルを付ける.
  3. Streamlitにより情報を分析して可視化する.

これらの作業を通じて,非構造化データを制御するための基本的なテクニックを習得する.

SnowflakeのCortex関数

Cortex LLM関数

Snowflake Cortex LLM関数は,非構造化データの抽出,分析,生成を行うSQL関数である.これにより,非構造化データから情報をワンステップで抽出し,簡単な操作で実用的な情報に変換できる.

使用する関数は次の通り.

  • PARSE_DOCUMENT(): PDF文書からテキストを抽出する.

テキスト抽出の流れ

  1. ステージにあるPDFファイルのリストをSQLを使って収集する.
  2. PARSE_DOCUMENT()関数を実行し,PDF文書からテキストを抽出する.
  3. 抽出したテキストを新しいテーブルに書き込む.

実装ステップ

PDF解析

  1. SnowflakeのUIで以下のSQLクエリを実行し,ステージにあるPDFファイルをリストアップする.
SELECT METADATA$FILENAME
FROM TABLE(
  INFER_SCHEMA(
    LOCATION=>'@my_stage/pdf_files/',
    FILE_FORMAT=>'(TYPE=>CSV)'
  )
);
  1. PARSE_DOCUMENT()関数を用いて,PDFからテキストを抽出する.
SELECT PARSE_DOCUMENT($1) AS EXTRACTED_TEXT
FROM @my_stage/pdf_files;
  1. 抽出したテキストを新しいテーブルに挿入する.
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;

ラベル付け

  1. 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による可視化

  1. 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)
  1. Streamlitアプリを実行して結果を確認する.
streamlit run app.py

他のCortex関数の紹介

以下の3つのCortex関数を簡単に紹介する.

  1. ANALYZE_TEXT()

    • テキストデータを解析し,感情分析やキーフレーズ抽出を行う.
  2. GENERATE_TEXT()

    • 指定されたプロンプトに基づいて新しいテキストを生成する.
  3. SUMMARIZE_TEXT()

    • 長いテキストを要約し,重要なポイントを抽出する.

これらの関数は,非構造化データの高度な処理に役立つ.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?