最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python搭建NLP模型的詳細步驟

 更新時間:2026年02月28日 09:49:38   作者:yingjuxia.com  
文章提供了一套從零到一實現(xiàn)中文情感分析模型微調(diào)的完整教程,使用HuggingFaceTransformers庫,推薦pipeline零代碼快速上手,然后進行模型的完整微調(diào)和部署,需要的朋友可以參考下

你好!“NPL模型”我理解為 NLP(Natural Language Processing,自然語言處理)模型 的筆誤(非常常見),如果不是請立刻告訴我。

下面給你一套從 0 到 1 可直接運行的完整教程,2026 年最推薦的方案是 Hugging Face Transformers,因為:

  • 代碼最簡潔(幾行就能跑通)
  • 支持中文極好
  • 自動處理分詞、訓(xùn)練、評估、部署
  • 社區(qū)模型最豐富

一、推薦學(xué)習(xí)路徑(建議順序)

  1. 先用 pipeline 零代碼跑通(5 分鐘見效果)
  2. 再完整微調(diào)一個模型(掌握全流程)
  3. 最后部署成 API(可選)

我們今天直接走 第 2 步:完整微調(diào)中文情感分析模型(基于 bert-base-chinese)

二、完整步驟 + 可復(fù)制代碼

步驟 1:環(huán)境準(zhǔn)備(推薦新建虛擬環(huán)境)

# 1. 創(chuàng)建虛擬環(huán)境
conda create -n nlp python=3.11 -y
conda activate nlp

# 2. 安裝核心庫(2026 年推薦組合)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu   # CPU版(有GPU換cuda版本)
pip install transformers datasets accelerate evaluate pandas scikit-learn

步驟 2:準(zhǔn)備數(shù)據(jù)(使用公開中文數(shù)據(jù)集)

from datasets import load_dataset

# 加載中文情感分析數(shù)據(jù)集(Seamew/ChnSentiCorp)
dataset = load_dataset("seamew/ChnSentiCorp")

print(dataset)
# 輸出:DatasetDict({
#     train: Dataset({...}),
#     validation: Dataset({...}),
#     test: Dataset({...})
# })

# 查看前3條數(shù)據(jù)
print(dataset["train"][0:3])

步驟 3:數(shù)據(jù)預(yù)處理(Tokenizer)

from transformers import AutoTokenizer

model_name = "bert-base-chinese"   # 中文預(yù)訓(xùn)練模型

tokenizer = AutoTokenizer.from_pretrained(model_name)

def preprocess_function(examples):
    return tokenizer(examples["text"], 
                     truncation=True,      # 超長自動截斷
                     padding="max_length", # 統(tǒng)一長度
                     max_length=128)

# 應(yīng)用到整個數(shù)據(jù)集
tokenized_datasets = dataset.map(preprocess_function, batched=True)

步驟 4:加載模型 + 設(shè)置訓(xùn)練參數(shù)

from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer
import evaluate
import numpy as np

# 加載模型(2分類:正面/負面)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# 評估指標(biāo)(準(zhǔn)確率 + F1)
accuracy = evaluate.load("accuracy")
f1 = evaluate.load("f1")

def compute_metrics(eval_pred):
    logits, labels = eval_pred
    predictions = np.argmax(logits, axis=-1)
    acc = accuracy.compute(predictions=predictions, references=labels)
    f1_score = f1.compute(predictions=predictions, references=labels, average="macro")
    return {"accuracy": acc["accuracy"], "f1": f1_score["f1"]}

# 訓(xùn)練參數(shù)(可根據(jù)顯存調(diào)整)
training_args = TrainingArguments(
    output_dir="./results",          # 輸出目錄
    eval_strategy="epoch",           # 每輪評估
    save_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    num_train_epochs=3,              # 建議 3-5 輪
    weight_decay=0.01,
    logging_dir="./logs",
    report_to="none",                # 不上傳 wandb
    load_best_model_at_end=True,
    metric_for_best_model="f1"
)

步驟 5:開始訓(xùn)練(核心代碼)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets["train"],
    eval_dataset=tokenized_datasets["validation"],
    compute_metrics=compute_metrics,
    tokenizer=tokenizer,   # 自動保存 tokenizer
)

print("開始訓(xùn)練...")
trainer.train()

# 訓(xùn)練結(jié)束后在測試集上評估
test_results = trainer.evaluate(tokenized_datasets["test"])
print("測試集結(jié)果:", test_results)

步驟 6:保存模型 & 推理測試

# 保存模型
trainer.save_model("./my_chinese_sentiment_model")
tokenizer.save_pretrained("./my_chinese_sentiment_model")

# 加載推理(最常用方式)
from transformers import pipeline

sentiment_pipeline = pipeline(
    "sentiment-analysis",
    model="./my_chinese_sentiment_model",
    tokenizer="./my_chinese_sentiment_model"
)

# 測試
texts = [
    "這家餐廳的服務(wù)態(tài)度非常好,菜也超級美味!",
    "完全是浪費錢,東西難吃還貴,差評!",
    "一般般吧,沒什么特別的。"
]

results = sentiment_pipeline(texts)
for text, res in zip(texts, results):
    label = "正面" if res["label"] == "LABEL_1" else "負面"
    print(f"文本: {text}\n預(yù)測: {label} (置信度: {res['score']:.4f})\n")

三、完整項目結(jié)構(gòu)推薦(中型項目)

nlp_sentiment_project/
├── data/                  # 原始數(shù)據(jù)
├── models/                # 保存的模型
├── results/               # 訓(xùn)練輸出
├── logs/
├── main.py                # 訓(xùn)練主文件
├── inference.py           # 推理腳本
├── requirements.txt
└── README.md

四、常見問題 & 優(yōu)化建議(2026 經(jīng)驗)

問題解決方案
顯存不夠改小 batch_size=8 或用 torch.cuda.empty_cache()
中文效果差換用 hfl/chinese-bert-wwm-extchinese-roberta-wwm-ext
想更快訓(xùn)練--fp16(混合精度)或用 unsloth 加速微調(diào)
部署成 API用 FastAPI + pipeline(下節(jié)課可講)
多分類/多標(biāo)簽num_labels 改成對應(yīng)類別數(shù)即可

五、下一步建議

  1. 今天就把上面代碼跑通(CPU 也只需要 10–30 分鐘)
  2. 換成你自己的數(shù)據(jù)集(電商評論、電影短評等)
  3. 嘗試其他任務(wù):文本分類、命名實體識別、機器翻譯

到此這篇關(guān)于Python搭建 NLP模型的詳細步驟的文章就介紹到這了,更多相關(guān)Python搭建NLP模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python matplotlib如何給圖中的點加標(biāo)簽

    python matplotlib如何給圖中的點加標(biāo)簽

    這篇文章主要介紹了python matplotlib給圖中的點加標(biāo)簽,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python使用PyPDF進行PDF操作的代碼示例

    Python使用PyPDF進行PDF操作的代碼示例

    PDF 是一種非常常見的文件格式,用于文檔共享、電子書、合同等場景,對于開發(fā)者來說,能夠高效地操作 PDF 文件是一個重要技能,本文將介紹如何使用 Python 的 PyPDF 庫完成一些常見的 PDF 處理任務(wù),并分享實戰(zhàn)經(jīng)驗,需要的朋友可以參考下
    2025-01-01
  • Python 的 f-string 可以連接字符串與數(shù)字的原因解析

    Python 的 f-string 可以連接字符串與數(shù)字的原因解析

    這篇文章主要介紹了Python 的 f-string 可以連接字符串與數(shù)字的原因解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python實現(xiàn)將Json轉(zhuǎn)換為Xml與Markdown

    Python實現(xiàn)將Json轉(zhuǎn)換為Xml與Markdown

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)將Json轉(zhuǎn)換為Xml與Markdown格式,文中的示例代碼講解詳細,有需要的小伙伴可以了解一下
    2025-07-07
  • Python OpenCV實現(xiàn)邊緣檢測

    Python OpenCV實現(xiàn)邊緣檢測

    這篇文章主要為大家詳細介紹了Python OpenCV實現(xiàn)邊緣檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 自動轉(zhuǎn)換Python代碼為HTML界面的GUI庫remi使用探究

    自動轉(zhuǎn)換Python代碼為HTML界面的GUI庫remi使用探究

    這篇文章主要為大家介紹了自動轉(zhuǎn)換Python代碼為HTML界面的GUI庫remi使用探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 深入理解Pytorch微調(diào)torchvision模型

    深入理解Pytorch微調(diào)torchvision模型

    PyTorch是一個基于Torch的Python開源機器學(xué)習(xí)庫,用于自然語言處理等應(yīng)用程序。它主要由Facebookd的人工智能小組開發(fā),不僅能夠 實現(xiàn)強大的GPU加速,同時還支持動態(tài)神經(jīng)網(wǎng)絡(luò),這一點是現(xiàn)在很多主流框架如TensorFlow都不支持的
    2021-11-11
  • 一波神奇的Python語句、函數(shù)與方法的使用技巧總結(jié)

    一波神奇的Python語句、函數(shù)與方法的使用技巧總結(jié)

    這篇文章主要介紹了一波神奇的Python函數(shù)與方法的使用技巧總結(jié),包括裝飾器和with語句等的不常見用法,需要的朋友可以參考下
    2015-12-12
  • python連接MySQL數(shù)據(jù)庫實例分析

    python連接MySQL數(shù)據(jù)庫實例分析

    這篇文章主要介紹了python連接MySQL數(shù)據(jù)庫,實例分析了Python操作MySQL的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • django中靜態(tài)文件配置static的方法

    django中靜態(tài)文件配置static的方法

    我們可以使用Template 設(shè)置我們的網(wǎng)頁,同時,一個完美的網(wǎng)頁需要css,js,image 等靜態(tài)文件的支持,這篇文章主要介紹了django中靜態(tài)文件配置static的方法,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論

阜宁县| 曲靖市| 临桂县| 民勤县| 光泽县| 呼图壁县| 临颍县| 留坝县| 堆龙德庆县| 沙雅县| 墨玉县| 斗六市| 麻栗坡县| 石泉县| 隆安县| 万载县| 临桂县| 泰来县| 屏边| 太原市| 会泽县| 井冈山市| 苍南县| 二手房| 施秉县| 双峰县| 汶上县| 海伦市| 小金县| 托克托县| 江油市| 准格尔旗| 彭山县| 宣武区| 长宁县| 棋牌| 平乐县| 焉耆| 安义县| 简阳市| 崇信县|