用Python构建自然语言处理模型通常要经历几个前后衔接的关键阶段,从原始文本到可用模型,每一步都直接影响最终效果。下面我们按实际工程顺序说明这些阶段以及对应的Python做法。

一、文本数据采集
模型训练前需要先拿到文本。常见来源有公开数据集、数据库导出、爬虫抓取。Python的requests和pandas可快速完成采集与整理。
import pandas as pd
import requests
# 从接口获取评论文本
resp = requests.get('http://127.0.0.1:8000/comments')
data = resp.json()
df = pd.DataFrame(data)
print(df.head())
二、文本清洗
原始文本常带噪声,如HTML标签、特殊符号、空值。清洗阶段要去掉无关内容,统一编码。可用正则和字符串方法处理。
import re
def clean_text(text):
# 去除尖括号标签
text = re.sub(r'<.*?>', '', text)
# 只保留中文英文和数字
text = re.sub(r'[^一-龥A-Za-z0-9 ]', '', text)
return text.strip()
df['clean'] = df['text'].apply(clean_text)
三、分词与标准化
英文可用空格切分,中文需用jieba等库。标准化包括转小写、去停用词。下面以英文为例展示scikit-learn的简易分词。
from sklearn.feature_extraction.text import CountVectorizer # 自动完成分词和词频统计 vec = CountVectorizer(stop_words='english') X = vec.fit_transform(df['clean']) print(vec.get_feature_names_out()[:10])
四、文本向量化
机器只能处理数字,需把词转为向量。除了词频,还可使用TF-IDF或词嵌入。TF-IDF用TfidfVectorizer即可。
from sklearn.feature_extraction.text import TfidfVectorizer tv = TfidfVectorizer() X_tfidf = tv.fit_transform(df['clean'])
五、模型选择与训练
根据任务选模型,文本分类常用逻辑回归、朴素贝叶斯。用scikit-learn训练只需几行。
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split y = df['label'] X_train, X_test, y_train, y_test = train_test_split(X_tfidf, y, test_size=0.2) model = LogisticRegression() model.fit(X_train, y_train)
六、评估与部署
用测试集看准确率、F1值。达标后可保存模型供线上调用。
from sklearn.metrics import classification_report import joblib pred = model.predict(X_test) print(classification_report(y_test, pred)) joblib.dump(model, 'nlp_model.pkl')
以上阶段构成了用Python构建NLP模型的主线。实际项目中可能加入实体识别或深度学习,但基础流程一致。
PythonNLP_modelbuild_pipeline修改时间:2026-07-28 12:54:17