古诗词鉴赏代码
以下是一个基于Python的古诗词鉴赏机器学习简单代码示例(以情感分类为例),需提前安装 scikit-learn 、 jieba 等库:
1. 数据准备(示例数据)
# 模拟诗词数据(文本+标签:0=消极,1=积极)
data = [
("国破山河在,城春草木深", 0),
("春风又绿江南岸,明月何时照我还", 0),
("会当凌绝顶,一览众山小", 1),
("天生我材必有用,千金散尽还复来", 1)
]
2. 文本预处理(分词+特征提取)
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
# 自定义分词函数
def cut_text(text):
return " ".join(jieba.cut(text))
# 提取文本特征
texts = [cut_text(d[0]) for d in data]
labels = [d[1] for d in data]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts) # TF-IDF特征矩阵
3. 模型训练(以逻辑回归为例)
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42)
# 训练模型
model = LogisticRegression()
model.fit(X_train, y_train)
4. 模型评估
from sklearn.metrics import accuracy_score
# 预测测试集
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率:{accuracy:.2f}")
5. 新文本预测
def predict_sentiment(text):
cut_text = " ".join(jieba.cut(text))
text_vec = vectorizer.transform([cut_text])
sentiment = model.predict(text_vec)[0]
return "积极" if sentiment == 1 else "消极"
# 示例预测
new_poem = "长风破浪会有时,直挂云帆济沧海"
print(f"预测情感:{predict_sentiment(new_poem)}")
说明:
1. 实际应用需优化:
- 真实场景需使用大规模诗词数据集(如《全唐诗》),可从GitHub开源数据集获取。
- 优化分词(如加入诗词专用词典)、特征工程(n-gram、词向量等)或使用深度学习模型(LSTM、BERT)。
2. 扩展方向:
- 增加鉴赏维度(如主题分类、风格分析)。
- 使用预训练模型(如哈工大LTP)提升语义理解能力。