2024-10-24|閱讀時間 ‧ 約 0 分鐘

使用WordPress文章訓練大型語言模型

    許多大型語言模型(LLM)開始允許使用者將自己的資料餵進模型中,像是 OpenAI 的 ChatGPT 和 Anthropic 的 Claude。有了這個功能,你可以上傳你的部落格文章、程式碼或資料集來客製化模型的回應。在這篇文章中,你將學習如何從你的 WordPress 網站提取內容並餵給 Claude,然後以你的寫作風格撰寫或翻譯新的文章。

    收集文章

    有一些外掛可以將 WordPress 的文章匯出成 CSV 或 JSON 格式。如果你不想安裝任何外掛,也可以直接從資料庫匯出。只需登入 MySQL 資料庫,找到 wp_posts 資料表,然後執行以下 SQL 指令來取得資料庫中所有已發布的文章。

    SELECT * FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish'

    如果一切順利,你可以點選選單中的「匯出」按鈕,將格式調整為 CSV,然後下載檔案。

    你也可以進入後台管理介面,前往「工具 > 匯出」,然後下載檔案。不過,這個檔案是 XML 格式,比較難解析。

    清理 WordPress 註解和 HTML 標籤

    下載 CSV 檔案後,下一步是清理內容。以下是清理前後的範例。

    你可以將它載入為 pandas DataFrame,然後使用以下程式碼提取內容。Jupyter Notebook 的範例程式碼可以在我的 GitHub 上找到。

    import re
    import pandas as pd
    from bs4 import BeautifulSoup


    def extract_wordpress_content(content):
    # Remove WordPress block comments
    content_without_comments = re.sub(r'<!-- /wp:.*? -->', '', content)
    content_without_comments = re.sub(
    r'<!-- wp:.*? -->', '', content_without_comments)

    # Parse the HTML
    soup = BeautifulSoup(content_without_comments, 'html.parser')

    # Extract text from paragraphs and headings
    extracted_text = []
    for element in soup.find_all(['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']):
    extracted_text.append(element.get_text())

    # Extract code blocks
    for code_block in soup.find_all('pre', class_='wp-block-code'):
    extracted_text.append(f"Code:\n{code_block.get_text()}")

    # Join the extracted text
    full_text = ' '.join(extracted_text)
    return full_text


    def extract_post_content(df=None, file=None, limit=None, output_path=None):
    '''
    Extract post content from a CSV file.
    '''
    assert df is not None or file is not None, 'Either df or file must be provided'

    if file is not None:
    df = pd.read_csv(file)
    df = (df
    .sort_values(by='post_date', ascending=False)
    .reset_index(drop=True))

    print('Total posts:', len(df))
    if limit:
    df = df.head(limit)
    # Convert to string to avoid error caused by NaN
    df['post_title'] = df['post_title'].astype(str)
    print(df.head())

    post_content = ''
    collected_posts = 0
    for i in range(len(df)):

    # Continue when post_content is NaN
    if df.loc[i, 'post_content'] != df.loc[i, 'post_content']:
    continue

    extracted_content = extract_wordpress_content(
    df.loc[i, 'post_content'])
    post_content += df.loc[i, 'post_title']
    post_content += extracted_content
    post_content += '=' * 20
    collected_posts += 1

    print(f'Successfully collected {collected_posts} posts')
    if output_path:
    with open(output_path, 'w', encoding='utf-8') as f:
    f.write(post_content)
    return post_content

    在 Claude 中建立新專案並上傳文件 登入你的 Claude 帳號,點選左側面板中的「Projects」按鈕,然後點選「Create New Project」。

    在專案頁面中,你可以上傳已清理過的文章檔案。

    現在一切都準備就緒了!你可以開始新的對話來創建新內容。例如,你可以用這樣的提示詞(Prompt)問 Claude:

    「用我的寫作風格寫一篇關於將機器學習應用於股市預測的新部落格文章。使用類似於我現有文章的語言、語氣和結構。包含典型的元素,如程式碼範例、標題和我常用的詞句。」

    或者你可以請 Claude 將你的文章翻譯成另一種語言,像是:

    「請模仿Project Knowledge中文章慣用的用詞與語氣,將這篇關於股市機器學習的部落格文章翻譯成繁體中文,並將所有中國用語轉換為台灣用語。翻譯應保持原文的意思和風格,專有名詞不需翻譯,記得將標點符號修改為繁體中文的標點符號」

    希望這篇文章對你有幫助,能有效提升你的內容創作流程!



    本文轉載自:ARON HACK - 使用WordPress文章訓練大型語言模型

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.