Использование ближайших соседей для прогнозирования классификации текста с помощью fasttext

Я могу неправильно понять, как работают fasttext / deep learning для классификации, я хотел бы принять во внимание ближайших соседей для предсказания меток. Цель моей работы - предугадать ярлык с синонимами.

Я тренирую большой набор данных с помощью fasttext:

fasttext supervised -input data/spam_status.txt -output models/sem -lr 1.0 -wordNgrams 1 -epoch 25

Где spam_status.txt использует регулярное выражение для обозначения сообщения, содержащего слово «скайп»:

__label__skype i dont have skype __NUMBER__ sorry
__label__skype skype
__label__skype si ta un skype si
__label__skype i will give u my skype
__label__skype pv ici no skype
__label__skype skype

И множество других сообщений с другими ярлыками или «ОК», если ничего не найдено.

Ближайшие соседи "скайпа" (с fasttext nn models/sem.bin):

  • Эл. адрес
  • вибер
  • электронная почта
  • skp

Это отлично, Fasttext подскажет хорошие похожие слова. Но если я спрошу предсказание:

fasttext predict-prob ./models/sem.bin -                                                                                          
donne moi ton skype
__label__skype 1.00001
donne moi ton viber
__label__ok 1.00001
donne moi ton emaill
__label__ok 1.00001

Почему здесь не учитывается NN?


person Thomas Decaux    schedule 20.06.2018    source источник


Ответы (1)


Потому что вы обучили модель на примерах, где ТОЛЬКО сообщения со словом «скайп» имеют метку Skype. Поэтому сообщения со словами вроде «электронная почта» и «Viber» помечаются как «ок».

Ваш первый проход научил вас перемаркировать. Использование регулярного выражения для маркировки данных всегда будет вызывать подобные проблемы. Теперь вы можете, по крайней мере, пометить любое сообщение с помощью «email» или «Viber» на «__label__skype», чтобы он запомнил этот шаблон. Однако это, вероятно, не даст вам ничего лучше, чем просто использование регулярного выражения в качестве классификатора, потому что модель будет изучать входящий шаблон: если в ней есть одно из слов из этого короткого списка, назовите его «Skype», в противном случае назовите его « Ok".

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

person Sam H.    schedule 09.07.2018
comment
Итак, NN никогда не учитывается при прогнозировании? - person Thomas Decaux; 09.07.2018
comment
Я не знаю, на какие функции он смотрит, но когда есть такой простой шаблон, имеет смысл, что он будет смотреть только на него. - person Sam H.; 10.07.2018