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

Python搭建NLP模型的詳細(xì)步驟

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

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

下面給你一套從 0 到 1 可直接運(yùn)行的完整教程,2026 年最推薦的方案是 Hugging Face Transformers,因?yàn)椋?/p>

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

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

  1. 先用 pipeline 零代碼跑通(5 分鐘見(jiàn)效果)
  2. 再完整微調(diào)一個(gè)模型(掌握全流程)
  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. 安裝核心庫(kù)(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ù)(使用公開(kāi)中文數(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,      # 超長(zhǎng)自動(dòng)截?cái)?
                     padding="max_length", # 統(tǒng)一長(zhǎng)度
                     max_length=128)

# 應(yīng)用到整個(gè)數(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分類:正面/負(fù)面)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# 評(píng)估指標(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",           # 每輪評(píng)估
    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:開(kāi)始訓(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,   # 自動(dòng)保存 tokenizer
)

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

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

步驟 6:保存模型 & 推理測(cè)試

# 保存模型
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"
)

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

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

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

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

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

問(wèn)題解決方案
顯存不夠改小 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 改成對(duì)應(yīng)類別數(shù)即可

五、下一步建議

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

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

相關(guān)文章

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

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

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

    Python使用PyPDF進(jìn)行PDF操作的代碼示例

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

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

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

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

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

    Python OpenCV實(shí)現(xiàn)邊緣檢測(cè)

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

景洪市| 金川县| 开封市| 榆社县| 禹州市| 武山县| 开江县| 女性| 辰溪县| 临泽县| 五家渠市| 成都市| 禹州市| 营口市| 溆浦县| 萨嘎县| 潮州市| 遂川县| 会理县| 武穴市| 北碚区| 湘阴县| 永平县| 凉城县| 桐庐县| 株洲市| 福州市| 扶绥县| 白水县| 申扎县| 长治市| 胶州市| 平昌县| 兰溪市| 双桥区| 新民市| 罗定市| 大石桥市| 中西区| 舟曲县| 平谷区|