Size: a a a

Natural Language Processing

2019 December 24

G

George in Natural Language Processing
David (ddale) Dale
Если это смещение не слишком сильное (не 99% одного класса), можно вообще не фиксить. Пусть модель выучит реальное распределение классов.
Если есть нормальные признаки, и если редкие классы таки содержат приличное число примеров (в штуках), то модель нормально научится их детектить, даже если в процентах их мало.
А если редких классов даже в штуках мало, то надо или укрупнять классы, или go get more data.
И какую модель юзать? Стоит ли уходить в w2v, d2v? Или хватит tf-idf?
источник

ck

cnstntn kndrtv in Natural Language Processing
George
Может быть еще такая проблема: плохая разметка данных, то есть текст не подходит к классу, такое можно детектить? И нужно ли фиксить?
А кто-то применял подходы для классификации с noisy labels? Поделитесь опытом.
источник

D(

David (ddale) Dale in Natural Language Processing
George
И какую модель юзать? Стоит ли уходить в w2v, d2v? Или хватит tf-idf?
можно начать с бейзлайна лемматизация + tf-idf + логистическая регрессия, его нормально потюнить, и дальше уже пытаться нейронками переплюнуть
источник

G

George in Natural Language Processing
Кстати, замена чисел в текстах на "#NUMBER" имеет смысл и пользу?
источник

K

Kir in Natural Language Processing
Это очень контекстуально
источник

K

Kir in Natural Language Processing
Я например не могу терять числа, но фт например с ними не очень, меняю числа на числительные
источник

YB

Yuri Baburov in Natural Language Processing
George
Кстати, замена чисел в текстах на "#NUMBER" имеет смысл и пользу?
Давай три примера классификаторов разберём: хотим номер этажа на выходе, хотим количество комнат определять, хотим определять город.
источник

YB

Yuri Baburov in Natural Language Processing
Yuri Baburov
Давай три примера классификаторов разберём: хотим номер этажа на выходе, хотим количество комнат определять, хотим определять город.
В первом случае лучше оставить, во втором можно заменить на shape (NN.N для 23.4, или в этом особом случае на 2N.N для 23.4 -- оставить первую значащую цифру), в третьем -- все числа на N.
Чем грубее представление -- тем лучше генерализация (особенно, если примеров мало), но мы можем потерять какие-то детали.
источник

SZ

Sergey Zakharov in Natural Language Processing
Как так получилось, что в spaCy есть модели для литовского и люксембургского языка, но нет для русского?
источник

SZ

Sergey Zakharov in Natural Language Processing
Если что, про spacy-ru я знаю
источник

YB

Yuri Baburov in Natural Language Processing
Sergey Zakharov
Как так получилось, что в spaCy есть модели для литовского и люксембургского языка, но нет для русского?
а они хорошие? :)
источник

SZ

Sergey Zakharov in Natural Language Processing
Yuri Baburov
а они хорошие? :)
Я не знаю. Может и нет, но иногда хоть что-то нужно. Тебе респект, конечно, за spacy-ru. В основую либу не было идеи законтрибутить?
источник

YB

Yuri Baburov in Natural Language Processing
Sergey Zakharov
Я не знаю. Может и нет, но иногда хоть что-то нужно. Тебе респект, конечно, за spacy-ru. В основую либу не было идеи законтрибутить?
я готовлю хорошую версию для контрибуции, почти готова.
она была бы уже давно готова, если бы был единый датасет для NER.
источник

YB

Yuri Baburov in Natural Language Processing
Sergey Zakharov
Я не знаю. Может и нет, но иногда хоть что-то нужно. Тебе респект, конечно, за spacy-ru. В основую либу не было идеи законтрибутить?
версии с "хоть что-то" там есть, лемматизация там как-то работает из коробки.
источник

SZ

Sergey Zakharov in Natural Language Processing
ну меня как раз больше всего ner интересует прямо сейчас и немного синтаксический парсер
источник

YB

Yuri Baburov in Natural Language Processing
думаю, многим интересно, что происходит со spacy-ru, поэтому расскажу в двух словах:
- обучение из CLI в spacy 2.1 и 2.2 сломано (поэтому, у меня сделано через скрипт)
- хочется добавить аугментации для трибанков POS/DEP (не сделано)
- хочется несколько NER объединить в одной модели, т.к. самый крупный датасет размечен только на PERSON, ORG, LOC (сделано вчерновую, т.к. там есть нюансы).
- в spacy для многих языков с большим количеством морфологии низкая точность, т.к. фичи для языков  — неоптимальные (т.к. не поддерживается fasttext, что мог бы эти фичи успешно заменить), вот мой issue по этому поводу:
https://github.com/explosion/spaCy/issues/4815
способ для фикса придуман, он рабочий, правда, есть два разных варианта: делать более быстрый стемминг через snowball (модуль pystemmer) или более медленную лемматизацию через pymorphy2 . оба способа работают, но я их ещё не сравнивал. что думаете?
такая пред-лемматизация через pymorphy2 даёт максимум 10к-15к слов/сек, что предположительно замедлит spacy с 8к слов/сек до 5к-6к слов/сек. этого не хотелось бы.
я тестирую эффект на задаче классификации, и получаю точность 65% без стемминга, 70% со стеммингом, 71% с лемматизацией, но эксперимент был не очень чистый, (этот 1% может быть из-за грязноты эксперимента)
источник

DB

Dmitry Bohdanov in Natural Language Processing
Нужен совет по модели кластеризации. Есть список клиентов -> у клиентов есть список товаров -> Каждый товар содержит несколько слов.
Хочу кластеризировать клиентов в несколько групп по виду деятельности - то есть по общим топикам.

Как бы вы представили такую модель для кластеризации в вектора например для kmeans?
источник

VI

Vitaly Ivanin in Natural Language Processing
Yuri Baburov
думаю, многим интересно, что происходит со spacy-ru, поэтому расскажу в двух словах:
- обучение из CLI в spacy 2.1 и 2.2 сломано (поэтому, у меня сделано через скрипт)
- хочется добавить аугментации для трибанков POS/DEP (не сделано)
- хочется несколько NER объединить в одной модели, т.к. самый крупный датасет размечен только на PERSON, ORG, LOC (сделано вчерновую, т.к. там есть нюансы).
- в spacy для многих языков с большим количеством морфологии низкая точность, т.к. фичи для языков  — неоптимальные (т.к. не поддерживается fasttext, что мог бы эти фичи успешно заменить), вот мой issue по этому поводу:
https://github.com/explosion/spaCy/issues/4815
способ для фикса придуман, он рабочий, правда, есть два разных варианта: делать более быстрый стемминг через snowball (модуль pystemmer) или более медленную лемматизацию через pymorphy2 . оба способа работают, но я их ещё не сравнивал. что думаете?
такая пред-лемматизация через pymorphy2 даёт максимум 10к-15к слов/сек, что предположительно замедлит spacy с 8к слов/сек до 5к-6к слов/сек. этого не хотелось бы.
я тестирую эффект на задаче классификации, и получаю точность 65% без стемминга, 70% со стеммингом, 71% с лемматизацией, но эксперимент был не очень чистый, (этот 1% может быть из-за грязноты эксперимента)
А в чем профит от аугментаций на этих фичах? Чтобы модель была устойчивее к ошибкам парсера\таггера?
источник

DB

Dmitry Bohdanov in Natural Language Processing
Моя гипотеза пока такая - каждое слово превратить в вектор по fasttext, выделить топ 100 слов например на TF-IDF и разложить на 100 слов * 100 (размер вектора fasttext) и так получится 10000 колонок. Может что-то экономнее?
источник

YB

Yuri Baburov in Natural Language Processing
Vitaly Ivanin
А в чем профит от аугментаций на этих фичах? Чтобы модель была устойчивее к ошибкам парсера\таггера?
да. дело в том, что корпус для DEP не очень большой — там всего 110 словоформ участвует и кажется всего около миллиона слов. для POS можно дополнять другими корпусами, конечно (и не все совместимы друг с другом), но для DEP всё. а DEP — модель синтаксиса — самая важная для любого сложного применения spacy и подобных технологий.
источник