我有一个由两列组成的数据集(600行):
-摘要:其中包含文档文本
-关键字:包含用于标识该文档的关键字。
Summary KeyWords_in_Array_wo_insurance
0 court sanction scheme transfer insur reinsur b... [insolvency]
1 immedi custodi sentenc month week impos direct... [administration of justice, civil evidence, se...
2 motorist injur hit run collis car identifi dri... [negligence, road traffic]
3 claimant given permiss continu claim compani a... [insolvency, civil procedure]
4 court gave guidanc approach taken applic relea... [civil procedure, costs]
5 plaintiff solicitor entitl declar life critic ... [trusts]
6 claimant insur establish requir standard road ... [personal injury, torts]
7 minimum indemn requir institut charter account... [arbitration, civil procedure, costs, accounta...
8 applic secur cost court could take account eve... [civil procedure, insolvency, cpr, costs]
我想预测哪些关键字标识摘要。 关键字不是互斥的。
我的代码是:
X_train, X_test, y_train, y_test = train_test_split(df_final["Summary"], df_final["KeyWords_in_Array_wo_insurance"], test_size=0.20, random_state=42)
mlb = MultiLabelBinarizer()
y_train_mlb = mlb.fit_transform(y_train)
classifier = Pipeline([
('vectorizer', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', OneVsRestClassifier(LinearSVC()))])
classifier.fit(X_train, y_train_mlb)
y_predicted = classifier.predict(X_test)
all_labels = mlb.inverse_transform(y_predicted)
y_test_mlb = mlb.transform(y_test)
print("Accuracy = ", accuracy_score(y_test_mlb,y_predicted))
我的准确性得分很低:20%
因此,我认为我的分类不够好。
其原因可能是某些关键字仅使用一次。 例如,关键字“动物”或“伙伴关系”或“成功”仅用于1行。 (意味着,它们仅分配给一个摘要)
因此,我认为,当我在训练和测试中拆分数据集时,一些“孤独的关键字”会输入测试数据集,而不是训练数据集。因此,将永远不会对模型进行训练。
这是我的准确性如此之低的原因吗?
还是我做错了其他事情?
答案 0 :(得分:0)
我认为这可能是因为您要获取的所有不同类的数据都不多。如果您要通过两节课来训练某项内容,则每个课程都需要数千个文本。也许你没有。
对于您来说,民事诉讼程序和民事证据也被视为不同的类别。我可以想象,如果对所有这些词都进行词法化处理,并创建较小的类别(例如,将这两个词作为“民事”加入),您会得到更好的结果吗?