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

python搭建NPL模型的詳細步驟和代碼

 更新時間:2026年04月10日 09:57:45   作者:yingjuxia.com  
本文提供2026年最新中文NLP模型搭建教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

“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)境準備(推薦新建虛擬環(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:準備數(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)
# 評估指標(準確率 + 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-ext 或 chinese-roberta-wwm-ext
想更快訓(xùn)練加 --fp16(混合精度)或用 unsloth 加速微調(diào)
部署成 API用 FastAPI + pipeline(下節(jié)課可講)
多分類/多標簽把 num_labels 改成對應(yīng)類別數(shù)即可

五、下一步建議

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

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

相關(guān)文章

  • PyQt5使用pyqtgraph繪制波形圖

    PyQt5使用pyqtgraph繪制波形圖

    pyqtgraph是Python平臺上一種功能強大的2D/3D繪圖庫,相當于matplotlib庫,比它更強大。本文就來利用pyqtgraph實現(xiàn)繪制波形圖,需要的可以參考一下
    2023-01-01
  • python3 selenium 切換窗口的幾種方法小結(jié)

    python3 selenium 切換窗口的幾種方法小結(jié)

    今天小編就為大家分享一篇python3 selenium 切換窗口的幾種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Django-channels 實現(xiàn)WebSocket實例

    詳解Django-channels 實現(xiàn)WebSocket實例

    這篇文章主要介紹了詳解Django-channels實現(xiàn)WebSocket實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python中的With語句的使用及原理

    Python中的With語句的使用及原理

    這篇文章主要介紹了Python中的With語句的使用及原理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python matplotlib實現(xiàn)條形統(tǒng)計圖

    Python matplotlib實現(xiàn)條形統(tǒng)計圖

    這篇文章主要為大家詳細介紹了Python matplotlib實現(xiàn)條形統(tǒng)計圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Python計算圖片數(shù)據(jù)集的均值方差示例詳解

    Python計算圖片數(shù)據(jù)集的均值方差示例詳解

    這篇文章主要為大家介紹了Python計算圖片數(shù)據(jù)集的均值方差,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Pandas繪圖函數(shù)超詳細講解

    Pandas繪圖函數(shù)超詳細講解

    matplotlib要組裝一張圖表,需要的各個基礎(chǔ)組件對象。相對工作量較大,但在pandas中我們有行標簽和列標簽以及分組信息。原本制作一張圖表需要一大堆matplotlib代碼。在pandas中只需要一兩條代碼就可以了,今天記錄一下,pandas中常見的幾個繪制圖表的方法
    2022-12-12
  • 利用Python實現(xiàn)一個帶進度條的URL批量下載工具(含GUI界面)

    利用Python實現(xiàn)一個帶進度條的URL批量下載工具(含GUI界面)

    本文將帶你一步一步實現(xiàn)一個支持 GUI 操作的批量 URL 下載工具,支持從 Excel 文件中讀取鏈接,自動保存、記錄失敗鏈接,并帶有下載進度條,非常適合運營、測試、爬蟲等批量下載需求,需要的朋友可以參考下
    2025-07-07
  • 探究Python中isalnum()方法的使用

    探究Python中isalnum()方法的使用

    這篇文章主要介紹了探究Python中isalnum()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • python里大整數(shù)相乘相關(guān)技巧指南

    python里大整數(shù)相乘相關(guān)技巧指南

    對于大整數(shù)計算,一般都要用某種方法轉(zhuǎn)化,否則會溢出。但是python無此擔憂了。Python支持“無限精度”的整數(shù),一般情況下不用考慮整數(shù)溢出的問題,而且Python Int類型與任意精度的Long整數(shù)類可以無縫轉(zhuǎn)換,超過Int 范圍的情況都將轉(zhuǎn)換成Long類型。
    2014-09-09

最新評論

桑日县| 沈阳市| 读书| 龙陵县| 安溪县| 景宁| 微博| 石门县| 大港区| 福贡县| 定南县| 大安市| 黄陵县| 新乡市| 开远市| 阿勒泰市| 河曲县| 宜城市| 龙里县| 句容市| 黄大仙区| 灵川县| 格尔木市| 淅川县| 水城县| 仁布县| 延长县| 清涧县| 绥德县| 迭部县| 乐平市| 万源市| 舞钢市| 余江县| 怀集县| 大悟县| 浙江省| 丰顺县| 黄陵县| 天峨县| 婺源县|