Есть ли проблема с моим набором данных для идентификации языка с помощью sklearn? - PullRequest
0 голосов
/ 14 января 2019

Я обучил свою модель идентификации языка на огромном наборе данных для обучения на 53 языках. Для некоторых языков точность точна, но некоторые языки терпят неудачу довольно плохо, английский является одним из них. Это заставляет меня думать, что набор данных все еще не работает.

Я недостаточно отобрал данные до 500 записей, удалил специальные символы, лишние пробелы и другие знаки препинания из текста и ограничил длину текстового поля до 140 символов. Набор данных для английского после очистки выглядит так: https://drive.google.com/file/d/1lv4ZqTPUCRV2s4G9-LWlXXVxtpW2s9Hb/view

К сожалению, точность едва ли .5. Некоторые строки все еще содержат тексты на разных языках, однако я не уверен, как об этом позаботиться.

Кроме того, я использую TFIidfVectorizer с ngram_range от 1 до 3, чтобы нормализовать функцию текста и классификатор логистической регрессии. Я также попробовал 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

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Самая простая вещь, о которой я могу думать, это разрешить определенное число, например 40, наиболее распространенных специальных символов. Некоторые из них мгновенно отдают язык

0 голосов
/ 14 января 2019

На самом деле, ваши результаты очень хорошие. Ваш вопрос имеет широкие возможности. Я указываю на некоторые из них.

Нет выбора golden rule для выбора модели в machine learning. Вы можете попробовать разные модели и искать причину why one is working and other not?. Какой опыт сборки, чтобы выбрать эти модели.

The prediction of these model depend on features. Существует вероятность, что, хотя undersampling, вы теряете много полезной информации (даже для английского), даже some-times special characters, punctualtions содержит ценную информацию. Вы можете попробовать это тоже.

Но, опять же, ваши результаты хорошие. Но вы также можете попробовать другие модели и выбрать наиболее подходящую.

...