iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

政府公開資料集的資料通常是長篇文章或完整的描述,對於AI模型的短時記憶體來說,一次處理這麼多資訊是非常困難的。
所以我們要將這些原始資料進行加工,轉成AI能夠利用的片段。這個過程主要分為資料清洗與文字切分。

一、清洗與切分

資料清洗:移除雜訊,專注於核心內容。
文字切分:將長篇資料切成大小適中的片段,確保每個片段都具備獨立的意義,同時不會過長。

二、使用LangChain進行切分

LangChain 提供了多種文字切分器,其中 RecursiveCharacterTextSplitter 是最常用且功能強大的選擇。

以下是程式碼範例,將昨天解析出的旅遊資料轉換為可用的文件片段。

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.schema.document import Document
from typing import List

# 昨天解析出來的原始資料
tourism_data = [
    {'name': '士林夜市', 'description': '士林夜市是台北市範圍最大的夜市,也是國外觀光客造訪台北必去的觀光景點。…', 'address': '台北市士林區'},
    {'name': '清境農場', 'description': '清境農場位於南投縣仁愛鄉,海拔約1700-2000公尺,以其綠色草坪、綿羊秀和壯麗的山景聞名。…', 'address': '南投縣仁愛鄉'},
    # ... 其他資料
]

def split_and_format_documents(data: List[dict]) -> List[Document]:
    documents = []
    # 建立一個文字切分器
    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=256,
        chunk_overlap=50,
        length_function=len
    )
    
    # 迴圈處理每一筆資料
    for item in data:
        full_text = f"景點名稱:{item['name']}\n地址:{item['address']}\n介紹:{item['description']}"
        
        # 使用切分器將完整文字切成片段
        chunks = text_splitter.split_text(full_text)
        
        # 將每個片段轉換為物件,加入metadata
        for chunk in chunks:
            documents.append(Document(
                page_content=chunk,
                metadata={
                    "source": "嘉義旅遊資料集",
                    "title": item['name'],
                    "address": item['address']
                }
            ))
            
    print(f"原始資料經處理後,共產生 {len(documents)} 個文件片段。")
    return documents

# 執行函數並檢視結果
processed_documents = split_and_format_documents(tourism_data)

# 顯示第一個物件的內容
print("\n--- 第一個 Document 物件範例 ---")
print(f"內容:\n{processed_documents[0].page_content}")
print(f"\nMetadata:\n{processed_documents[0].metadata}")

chunk_size:每個片段的字元數上限
chunk_overlap:片段間的重疊字元數,有助於保持上下文連貫

三、結語

今天我們將雜亂的原始資料,轉成許多知識塊。
明天會將這些知識塊向量化,成為AI顧問的記憶庫,謝謝各位今天的觀看。


上一篇
【Day4】資料的來源:從台灣政府公開資料集獲取旅遊資訊
下一篇
【Day6】資料的向量化
系列文
智慧旅遊顧問--結合 LLM 與 RAG 架構的台灣旅遊資訊助手8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言