一个csv文件用bert变词向量后用svm分类的代码
时间: 2024-02-01 12:16:31 浏览: 103
以下是一个示例代码,用于将CSV文件中的文本数据转换为BERT词向量,并使用SVM进行分类。在这个示例中,我们使用了Hugging Face的transformers库来实现BERT模型和词向量转换。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
from transformers import BertTokenizer, BertModel
# 加载BERT模型和tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
# 读取CSV文件
df = pd.read_csv('data.csv')
# 把文本数据转换为BERT词向量
def get_bert_embeddings(text):
encoded_input = tokenizer(text, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
output = model(**encoded_input)
embeddings = output[0][:, 0, :].numpy()
return embeddings
df['embeddings'] = df['text'].apply(get_bert_embeddings)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df['embeddings'], df['label'], test_size=0.2, random_state=42)
# 训练SVM模型
clf = SVC(kernel='linear')
clf.fit(list(X_train), list(y_train))
# 预测并计算准确率
y_pred = clf.predict(list(X_test))
acc = accuracy_score(list(y_test), y_pred)
print('Accuracy:', acc)
```
请注意,此示例假定CSV文件包含两列:文本数据和标签。在这个示例中,我们使用了BERT-base模型。如果您想使用不同的BERT模型,请相应更改模型名称。此外,我们使用了线性SVM,但您可以尝试其他类型的SVM或其他分类器。
阅读全文