Size: a a a

Natural Language Processing

2020 February 21

Ю

Юлия in Natural Language Processing
Всем привет! Подскажите, где наиболее полно можно прочитать про актуальное на сегодня построение актантой модели.
Читала у Апресяна, но описания параметров мне не хватило. На аот тоже неполно (не вижу части характеристик).
Для задачи построения семантического графа предложения
источник
2020 February 22

D(

David (ddale) Dale in Natural Language Processing
Alexander Kukushkin
Было бы интересно посмотреть код для квантизации fasttext. Какое получилось сжатие, на сколько хуже качество и скорость. Думаю о том чтобы добавить fasttext в navec. Сам немного скептически отношусь к fasttext и не использую, но люди точно спросят почему нет поддержки
Накидал текстик про свои эксперименты со сжатием фасттекста.
Квантизацией и уменьшением словаря получилось пожать модельку с 2.7 гб до 28 мб.
Ещё кучу всего надо замерить (скорость, качество на downstream-задачках), но уже можно смотреть, читать код, критиковать)
источник

AK

Alexander Kukushkin in Natural Language Processing
David (ddale) Dale
Накидал текстик про свои эксперименты со сжатием фасттекста.
Квантизацией и уменьшением словаря получилось пожать модельку с 2.7 гб до 28 мб.
Ещё кучу всего надо замерить (скорость, качество на downstream-задачках), но уже можно смотреть, читать код, критиковать)
Очень интересно

1. "2 миллиона строк в матрице эмбеддингов, но только 330 тысяч из них реально используются." - вот это новость
2. "уменьшает число строк в ней с 2 миллионов до 500 тысяч, размещая в каждой строке новой матрицы средневзвешенное из строк старой матрицы" - это какое-то приближение, да? по идее, надо просто переобучить с размером 500к
3. "20К слов, 100К n-грамм ... дала 96.6% сходство с оригиналом" - 20к очень мало, мне кажется такой словарь, покроет может быть 40% слов в новостных статьях, точно знаю, что чтобы покрыть 95% нужен словарь 250к. Получается fasttext почти только на н-граммах. Может быть 96.6% потому измеряется сходство на 4 небольших датасетах
4. В коде предлагается использовать модель через "gensim.models.fasttext.FastTextKeyedVectors.load". Как это работает? Gensim ничего не знает про квантизацию.
5. "В ближайшем будущем я перейду от сжатия словных эмбеддингов к созданию компактной модели фразных эмебддингов для русского языка" - это интересная тема, давай посотрудничаем. Я сейчас обкатываю компактную модель для NER для русского https://github.com/natasha/slovnet.
источник

D(

David (ddale) Dale in Natural Language Processing
2. Да, это приближение, чтобы не переобучать.

3. 4 небольших текста я рассматриваю как выборку, и 96% - как выборочную оценку. Если по тысяче случайных слов оценка получилась такой, то и на большом корпусе должно выйти что-то близкое.
А так вообще я и до 0 пробовал словарь сокращать; на одних только n-граммах ft выдает тоже нечто осмысленное. Надо будет в текст это добавить.
Но да, я ещё буду сравнивать качество решения разных downstream-задачек, чтобы быть увереннее.

4. А прелесть в том, что KeyedVectors и не должны ничего знать про квантизацию. Обычно в них сидят numpy-матрицы, но их можно подменить на любой другой объект, обладающий shape и getitem, и Gensim не заметит подвоха.

5. Да, было бы интересно. Я потыкаю slovnet. Ну и напишу, когда у меня самого будет чем поделиться.
источник

YB

Yuri Baburov in Natural Language Processing
Alexander Kukushkin
Очень интересно

1. "2 миллиона строк в матрице эмбеддингов, но только 330 тысяч из них реально используются." - вот это новость
2. "уменьшает число строк в ней с 2 миллионов до 500 тысяч, размещая в каждой строке новой матрицы средневзвешенное из строк старой матрицы" - это какое-то приближение, да? по идее, надо просто переобучить с размером 500к
3. "20К слов, 100К n-грамм ... дала 96.6% сходство с оригиналом" - 20к очень мало, мне кажется такой словарь, покроет может быть 40% слов в новостных статьях, точно знаю, что чтобы покрыть 95% нужен словарь 250к. Получается fasttext почти только на н-граммах. Может быть 96.6% потому измеряется сходство на 4 небольших датасетах
4. В коде предлагается использовать модель через "gensim.models.fasttext.FastTextKeyedVectors.load". Как это работает? Gensim ничего не знает про квантизацию.
5. "В ближайшем будущем я перейду от сжатия словных эмбеддингов к созданию компактной модели фразных эмебддингов для русского языка" - это интересная тема, давай посотрудничаем. Я сейчас обкатываю компактную модель для NER для русского https://github.com/natasha/slovnet.
1. опция
 -bucket             number of buckets [2000000]
2. если переобучить с размером 500к, получится примерно то же самое, увы, hashing trick никуда не делся. до 50% единиц (слов и н-грамм) будут вместе, да? какая там вероятность по парадоксу близнецов? но различение будет работать через сумму хешей, т.е. это hash embeddings в другой форме. они даже неплохо работают в spacy на словаре в 4000 единиц (правда, на 3 таких слоях).
источник

YB

Yuri Baburov in Natural Language Processing
Alexander Kukushkin
Очень интересно

1. "2 миллиона строк в матрице эмбеддингов, но только 330 тысяч из них реально используются." - вот это новость
2. "уменьшает число строк в ней с 2 миллионов до 500 тысяч, размещая в каждой строке новой матрицы средневзвешенное из строк старой матрицы" - это какое-то приближение, да? по идее, надо просто переобучить с размером 500к
3. "20К слов, 100К n-грамм ... дала 96.6% сходство с оригиналом" - 20к очень мало, мне кажется такой словарь, покроет может быть 40% слов в новостных статьях, точно знаю, что чтобы покрыть 95% нужен словарь 250к. Получается fasttext почти только на н-граммах. Может быть 96.6% потому измеряется сходство на 4 небольших датасетах
4. В коде предлагается использовать модель через "gensim.models.fasttext.FastTextKeyedVectors.load". Как это работает? Gensim ничего не знает про квантизацию.
5. "В ближайшем будущем я перейду от сжатия словных эмбеддингов к созданию компактной модели фразных эмебддингов для русского языка" - это интересная тема, давай посотрудничаем. Я сейчас обкатываю компактную модель для NER для русского https://github.com/natasha/slovnet.
>что чтобы покрыть 95% нужен словарь 250к
250к словоформ же? или лемм? лемм примерно раз в 10 меньше, чем слов. 5-граммы близки к леммам.
источник

AK

Alexander Kukushkin in Natural Language Processing
David (ddale) Dale
2. Да, это приближение, чтобы не переобучать.

3. 4 небольших текста я рассматриваю как выборку, и 96% - как выборочную оценку. Если по тысяче случайных слов оценка получилась такой, то и на большом корпусе должно выйти что-то близкое.
А так вообще я и до 0 пробовал словарь сокращать; на одних только n-граммах ft выдает тоже нечто осмысленное. Надо будет в текст это добавить.
Но да, я ещё буду сравнивать качество решения разных downstream-задачек, чтобы быть увереннее.

4. А прелесть в том, что KeyedVectors и не должны ничего знать про квантизацию. Обычно в них сидят numpy-матрицы, но их можно подменить на любой другой объект, обладающий shape и getitem, и Gensim не заметит подвоха.

5. Да, было бы интересно. Я потыкаю slovnet. Ну и напишу, когда у меня самого будет чем поделиться.
3. Как ты отбирал топ-20к слов? Не по 4 небольшим датасетам?
4. Понятно. Непонятно другое, в "ft_freqprune_100K_20K_pq_100.bin" квантованые данные? Как FastTextKeyedVectors.load их читает? Он же на этапе загрузки не знает про квантование
источник

AK

Alexander Kukushkin in Natural Language Processing
Yuri Baburov
>что чтобы покрыть 95% нужен словарь 250к
250к словоформ же? или лемм? лемм примерно раз в 10 меньше, чем слов. 5-граммы близки к леммам.
250к токенов, например "В Усть-гульме в 5:30 утра" -> [в, усть-гульме, в, утра].  Таких нужно 250к для покрыть 95%
источник

D(

David (ddale) Dale in Natural Language Processing
Alexander Kukushkin
3. Как ты отбирал топ-20к слов? Не по 4 небольшим датасетам?
4. Понятно. Непонятно другое, в "ft_freqprune_100K_20K_pq_100.bin" квантованые данные? Как FastTextKeyedVectors.load их читает? Он же на этапе загрузки не знает про квантование
3. Нет, конечно)) Gensim прям в модели зашивает счётчики слов по обучающему датасету. Я использовал их.
4. Этот метод KeyedVectors.load внутри себя использует pickle, поэтому может десериализовать что угодно. В том числе квантованную как-бы-матрицу.
источник

AK

Alexander Kukushkin in Natural Language Processing
3. Понятно. Получается значит fasttext в основном использует нграммы даже когда слово есть в словаре.  Тогда вопрос зачем fasttext, есть char cnn, там мы явно используем только нграммы
4. Ааа, интересно
источник
2020 February 23

NO

Nikita O in Natural Language Processing
Пытаюсь разобраться какое отношение имеет изначальная работа Миколова ( https://arxiv.org/pdf/1301.3781.pdf ) к gensim. У изначального алгоритма Миколова была его родная реализация на плюсах. Она имеет какое-то отношение к gensim или это отдельная библиотека в которой алгоритм был независимо реализован?
источник

AF

Alexander Fedorenko in Natural Language Processing
Nikita O
Пытаюсь разобраться какое отношение имеет изначальная работа Миколова ( https://arxiv.org/pdf/1301.3781.pdf ) к gensim. У изначального алгоритма Миколова была его родная реализация на плюсах. Она имеет какое-то отношение к gensim или это отдельная библиотека в которой алгоритм был независимо реализован?
Миколов и Радик Радимов  - друзья. Они учились кажется вместе. И После того, как Миколов предложил wоrd2vec, Radik Radimov  и реализовал в своей библиотеке эту возможность. Где-то в инете есть инфа об этом.  Радик Радимов сам об этом писал
источник

NO

Nikita O in Natural Language Processing
Так а на данный момент стандартной реализацией классического w2v является gensim?
источник

NO

Nikita O in Natural Language Processing
Т.е. если мне нужен w2v на питоне, то брать gensim или есть альтернативы?
источник

IM

Ivan Menshikh in Natural Language Processing
Nikita O
Так а на данный момент стандартной реализацией классического w2v является gensim?
Да, именно так
источник

AF

Alexander Fedorenko in Natural Language Processing
Nikita O
Пытаюсь разобраться какое отношение имеет изначальная работа Миколова ( https://arxiv.org/pdf/1301.3781.pdf ) к gensim. У изначального алгоритма Миколова была его родная реализация на плюсах. Она имеет какое-то отношение к gensim или это отдельная библиотека в которой алгоритм был независимо реализован?
источник

IM

Ivan Menshikh in Natural Language Processing
ей неудобно пользоваться к сожалению, но вообще это действительно оригинальный код миколова
источник

AF

Alexander Fedorenko in Natural Language Processing
Ivan Menshikh
ей неудобно пользоваться к сожалению, но вообще это действительно оригинальный код миколова
я не настаиваю на ее использовании)
Это для полноты картины
источник

NO

Nikita O in Natural Language Processing
Еще буду рад если разъясните мне один момент про negative sampling и иерархический софтмакс. Как я понял negative sampling точно используется и в изначальной сишной реализации и в gensim. А иерархический софтмакс и там, и там используется?
источник

NO

Nikita O in Natural Language Processing
источник