references: https://www.youtube.com/watch?v=EeoCcjPuJwE&list=PLDdSOnH0h1PpCo1novB32KXP5mbpCw-s5&index=19

使用 uv 快速建立財務文字情感分析專案#

uv 是一個簡單高效的 Python 專案初始化工具,結合了虛擬環境管理和依賴配置,適合開發者快速啟動專案。在這篇文章中,我將分享如何使用 uv 建立 Financial Text Sentimental Analysis 專案。


什麼是 uv#

uv 是一款輕量級工具,專注於:

  • 快速初始化專案:透過一行指令生成清晰的專案結構。

  • 基於 **pyproject.toml**:完全符合 Python 現代化的標準配置。

  • 虛擬環境自動管理:自動為每個專案創建虛擬環境,簡化操作流程。

它適合希望以簡單方式管理專案的開發者,並能提升開發效率。


使用 uv 開始專案#

步驟 1:安裝 uv#

在 macOS 上,您可以透過 Homebrew 安裝 uv

brew install uv

步驟 2:初始化專案#

執行以下指令以初始化專案:

uv init Financial-Text-Sentimental-Analysis

執行後,uv 將生成以下的初始專案結構:

├─ README.md
├─ hello.py
└─ pyproject.toml

步驟 3:配置專案依賴#

pyproject.toml 中設定專案所需的依賴:

[project]
name = "financial-text-sentimental-analysis"
version = "0.1.0"
description = "A project to analyze the sentiment of financial text"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "torch",
    "transformers",
    "feedparser",
    "requests",
]

這些依賴分別用於:

  • **torch** **transformers**:支援 NLP 模型的運行。

  • **feedparser**:解析 RSS 資料來源。

  • **requests**:處理 HTTP 請求。


步驟 4:撰寫主要程式邏輯#

編輯 main.py,實現對財務文章的情感分析邏輯,以下是程式碼:

import feedparser
import ssl
from transformers import pipeline

if hasattr(ssl, '_create_unverified_context'):
    ssl._create_unverified_context = ssl._create_unverified_context

ticker = "TSLA"
keyword = "tesla"

pipe = pipeline("text-classification", model="ProsusAI/finbert")

rss_url = f"https://finance.yahoo.com/rss/headline?s={ticker}"

feed = feedparser.parse(rss_url)

total_score = 0
num_articles = 0

for i, entry in enumerate(feed.entries):
    if keyword.lower() not in entry.summary.lower():
        continue

    print(f"Title: {entry.title}")
    print(f"Link: {entry.link}")
    print(f"Published: {entry.published}")
    print(f"Summary: {entry.summary}")

    sentiment = pipe(entry.summary)[0]
    print(f"Sentiment: {sentiment['label']}, Score: {sentiment['score']}")
    print("-" * 40)

    if sentiment['label'] == 'positive':
        total_score += sentiment['score']
        num_articles += 1
    elif sentiment['label'] == 'negative':
        total_score -= sentiment['score']
        num_articles += 1

final_score = total_score / num_articles
print(f"Final sentiment score: {final_score}")

此程式會分析 Tesla 相關的財務文章,並輸出其情感分數。


步驟 5:執行程式#

uv run main.py

範例輸出:

Final sentiment score: -0.1043309470017751

結論#

uv 是一款輕量級且功能實用的工具,非常適合快速啟動和管理小型 Python 專案。結合虛擬環境管理與專案初始化功能,它讓開發過程更順暢。

希望這篇文章能幫助您快速了解 uv 並順利運用於專案開發!