【发布时间】:2021-03-16 12:45:01
【问题描述】:
我是 NLP 的新手,这让我有点困惑。 我正在尝试在我的数据集上使用 SVC 进行文本分类。 我有 6 个类的不平衡数据集。 文本是健康、体育、文化、经济、科学和网络类别的新闻。 我正在使用 TF-IDF 进行矢量化。
预处理步骤:lower-case所有文本并删除stop-words。因为我的文字是德语,所以我没有使用lemmatization
我的第一次尝试:
from sklearn.model_selection import train_test_split
train, test = train_test_split(df, test_size=0.2, random_state=42)
X_train = train['text']
y_train = train['category']
X_test = test['text']
y_test = test['category']
# Linear SVC:
text_clf_lsvc = Pipeline([('tfidf', TfidfVectorizer()), ('clf', LinearSVC()),])
predictions = text_clf_lsvc.predict(X_test)
我的 metrci 准确度分数是:93%
然后我决定减少维度:所以在我第二次尝试时,我添加了截断SVD
# Linear SVC:
text_clf_lsvc = Pipeline([('tfidf', TfidfVectorizer()),('svd', TruncatedSVD()),
('clf', LinearSVC()),])
predictions = text_clf_lsvc.predict(X_test)
我的 metrci 准确度分数下降到 34%。
我的问题:
1- 如果我想坚持使用 TF-IDF 和 SVC 进行分类,我该如何改进我的模型
2- 如果我想有一个好的分类,我还能做什么
【问题讨论】:
标签: python nlp svm text-classification tf-idf