我使用sklearn进行语言识别的数据集有问题吗



我已经在53种语言的巨大训练数据集上训练了我的语言识别模型。对于某些语言来说,精度是准确的,但有些语言却失败得很厉害,英语就是其中之一。这让我觉得数据集还是一团糟。

我已经将数据采样不足到500条记录,从文本中删除了特殊字符、额外空格和不同的标点符号,并将文本字段的长度限制为140个字符。清理后的英文数据集如下所示:https://drive.google.com/file/d/1lv4ZqTPUCRV2s4G9-LWlXXVxtpW2s9Hb/view

遗憾的是,准确度仅为0.5。有些行仍然包含不同的语言文本,然而,我不知道如何处理这一点。

此外,我使用ngram_range为1到3的TFIidfVectorizer来规范文本特征,并在此基础上使用逻辑回归分类器。我也尝试过MultinomilaNB,但没有成功。以下是我的代码:

y_resampled , x_resampled = under_sample(x, y)
x_train, x_val, y_train, y_val = model_selection.train_test_split(x_resampled, y_resampled, test_size=0.2, random_state=42)
vectorizer = feature_extraction.text.TfidfVectorizer(ngram_range=(1, 3), analyzer='char')
pipe = pipeline.Pipeline([
('vectorizer', vectorizer),
('clf', linear_model.LogisticRegression())])
# pipe = pipeline.Pipeline([
#     ('vectorizer', vectorizer),
#     ('clf', SGDClassifier())
# ])
pipe.fit(x_train, y_train)
y_predicted = pipe.predict(x_val)
print(metrics.classification_report(y_val, y_predicted, target_names=label_names))

这是分类报告:

precision    recall  f1-score   support
ar       0.96      0.95      0.95       209
az       0.95      0.77      0.85       189
be       0.88      0.85      0.86       235
bg       0.77      0.79      0.78       199
ca       0.65      0.62      0.63       199
ce       0.85      0.76      0.80       109
ceb       0.73      0.47      0.57        51
cs       0.84      0.72      0.78       210
da       0.55      0.56      0.56       202
de       0.67      0.79      0.73       214
el       0.96      0.92      0.94       203
en       0.44      0.68      0.53       208
eo       0.71      0.70      0.71       181
es       0.66      0.54      0.60       204
et       0.73      0.84      0.78       150
eu       0.77      0.84      0.81       195
fa       0.92      0.88      0.90       212
fi       0.79      0.83      0.81       212
fr       0.65      0.74      0.69       212
gl       0.51      0.60      0.55       178
he       1.00      0.97      0.98       220
hi       1.00      0.89      0.94       186
hr       0.41      0.38      0.39       199
hu       0.86      0.88      0.87       204
hy       0.99      0.91      0.95       211
id       0.46      0.40      0.43       211
it       0.58      0.75      0.65       185
ja       0.97      0.87      0.92       215
ka       0.99      0.94      0.97       198
kk       0.93      0.82      0.87       208
ko       0.98      0.94      0.96       207
la       0.54      0.70      0.61       185
lorem       0.88      0.94      0.91       192
lt       0.81      0.88      0.84       184
ms       0.42      0.49      0.45       181
nl       0.69      0.76      0.72       202
nn       0.59      0.54      0.56       209
no       0.49      0.46      0.47       197
pl       0.70      0.78      0.74       196
pt       0.57      0.52      0.54       185
ro       0.77      0.81      0.79       219
ru       0.67      0.74      0.70       180
sh       0.54      0.39      0.45       205
sk       0.73      0.68      0.70       179
sl       0.55      0.58      0.57       173
sr       0.84      0.88      0.86       192
sv       0.63      0.59      0.61       211
th       1.00      0.88      0.94       216
tr       0.74      0.67      0.70       196
uk       0.86      0.74      0.80       210
ur       0.95      0.87      0.91       159
uz       0.75      0.79      0.77       162
vi       0.84      0.83      0.83       186
vo       1.00      0.51      0.68        70
war       0.73      0.69      0.71       100
zh       0.75      0.91      0.82       197
micro avg       0.74      0.74      0.74     10602
macro avg       0.75      0.74      0.74     10602
weighted avg       0.75      0.74      0.75     10602

实际上,您的结果非常好。你的问题有很大的可能性。我指着其中一些。

CCD_ 2中的模型选择没有CCD_ 1。您可以尝试不同的型号并查找原因why one is working and other not?。哪些构建经验,选择这些模型。

The prediction of these model depend on features。当undersampling时,你可能会失去很多好的信息(即使是英语),即使some-times special characters, punctualtions也有宝贵的信息。你也可以试试。

但是,你的成绩还是不错的。但你也可以尝试其他型号,选择最合适的。

我能想到的最简单的事情就是允许一个特定的数字,比如40,包含最常见的特殊字符。他们中的一些人立即泄露了语言

相关内容

  • 没有找到相关文章

最新更新