今有从百度新闻中爬取的3万多条上市公司新闻标题数据,且每条新闻均标注了情感(消极、中性、消极),同时有1千多条待分类的新闻标题。试构建支持向量机模型,利用已经标注好的新闻标题数据进行训练,同时对待分类的新闻标题进行分类的代码实现
时间: 2024-04-03 21:35:35 浏览: 61
好的,针对您的问题,我可以为您提供以下的代码实现。
首先,我们需要导入必要的库:numpy、pandas、sklearn。其中,sklearn用于支持向量机的建模。
```python
import numpy as np
import pandas as pd
from sklearn.svm import SVC
```
接着,我们需要读取已经标注好的新闻标题数据,并将情感标签转换为数字标签,以便于模型训练。
```python
# 读取已经标注好的新闻标题数据
data = pd.read_csv('labeled_news.csv')
# 将情感标签转换为数字标签
data['sentiment'] = data['sentiment'].map({'negative': -1, 'neutral': 0, 'positive': 1})
```
然后,我们需要对标题进行特征提取,这里我们采用TF-IDF(Term Frequency-Inverse Document Frequency)的方法。
```python
# 导入TF-IDF向量化器
from sklearn.feature_extraction.text import TfidfVectorizer
# 构建向量化器
vectorizer = TfidfVectorizer()
# 对标题进行向量化
X = vectorizer.fit_transform(data['title'])
y = data['sentiment']
```
接下来,我们可以将数据集分为训练集和测试集,以便于训练和评估支持向量机模型。
```python
# 导入train_test_split函数
from sklearn.model_selection import train_test_split
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
最后,我们可以使用sklearn的SVC类来构建支持向量机模型,并对待分类的新闻标题进行分类。
```python
# 构建SVC模型
svm = SVC(kernel='linear')
# 在训练集上训练模型
svm.fit(X_train, y_train)
# 在测试集上评估模型
accuracy = svm.score(X_test, y_test)
print('模型在测试集上的准确率为:', accuracy)
# 对待分类的新闻标题进行分类
new_titles = ['中国电信发布2021年半年报', '外卖小哥被暴力殴打', '新冠疫苗获得世界卫生组织紧急使用授权']
new_titles_vec = vectorizer.transform(new_titles)
predictions = svm.predict(new_titles_vec)
for i, title in enumerate(new_titles):
print(title, '的情感为:', 'negative' if predictions[i]==-1 else 'neutral' if predictions[i]==0 else 'positive')
```
以上就是支持向量机对新闻标题进行情感分类的代码实现。注意,这里的模型只是一个示例,实际应用中需要根据具体情况对模型进行优化。
阅读全文