Size: a a a

Natural Language Processing

2020 August 21

A

Aaquib in Natural Language Processing
From where do i learn how to use bert
источник

A

Aaquib in Natural Language Processing
Basics
источник

AO

Alex Orgish in Natural Language Processing
Aaquib , please check https://t.me/nlp_eng , you can find a lot of resourses there
источник

A

Aaquib in Natural Language Processing
Alex Orgish
Aaquib , please check https://t.me/nlp_eng , you can find a lot of resourses there
Thanks
источник
2020 August 22

ДЛ

Дмитрий Лейкин... in Natural Language Processing
Добрый день. Такой вопрос. Как мне в yarge задать правило, что два слова встречаются в тексте в последовательном или любом порядке, но не подряд? Если слова подряд, то так:

rule(
   dictionary({'городской'}),
   dictionary({'лагерь'})
)

А если не подряд (чтобы обнаружилось в "в городском или палаточном лагере", либо "в лагере городском или палаточным")?
источник

AK

Alexander Kukushkin in Natural Language Processing
Дмитрий Лейкин
Добрый день. Такой вопрос. Как мне в yarge задать правило, что два слова встречаются в тексте в последовательном или любом порядке, но не подряд? Если слова подряд, то так:

rule(
   dictionary({'городской'}),
   dictionary({'лагерь'})
)

А если не подряд (чтобы обнаружилось в "в городском или палаточном лагере", либо "в лагере городском или палаточным")?
источник

ДЛ

Дмитрий Лейкин... in Natural Language Processing
Да, я видел это. Я попробовал даже использовать, но оно работало как-то неправильно, в том смысле, что говорило что есть оба слова даже если только одно слово есть. Возможно я как-то неправильно скопировал пример, поскольку разные его куски разбиты по разным кускам cookbook (ID_TOKENIZER задается в одном месте, что-то еще в другом).

Возможно лучше мне пояснить задачу. У меня есть текст. Мне надо понять, встречаются ли в этом тексте слова и словосочетания по разным шаблонам и нет. parser в yargy очень удобен, потому что я могу там конструировать разные правила. Таким образом, я могу написать правила для каждого шаблона и проверить их наличие. Но с помощью rule как я понимаю нельзя написать правило, которая говорило бы, что в тексте обязательно встречаются несколько слов, но не обязательно подряд. Или можно?
источник

AK

Alexander Kukushkin in Natural Language Processing
Дмитрий Лейкин
Да, я видел это. Я попробовал даже использовать, но оно работало как-то неправильно, в том смысле, что говорило что есть оба слова даже если только одно слово есть. Возможно я как-то неправильно скопировал пример, поскольку разные его куски разбиты по разным кускам cookbook (ID_TOKENIZER задается в одном месте, что-то еще в другом).

Возможно лучше мне пояснить задачу. У меня есть текст. Мне надо понять, встречаются ли в этом тексте слова и словосочетания по разным шаблонам и нет. parser в yargy очень удобен, потому что я могу там конструировать разные правила. Таким образом, я могу написать правила для каждого шаблона и проверить их наличие. Но с помощью rule как я понимаю нельзя написать правило, которая говорило бы, что в тексте обязательно встречаются несколько слов, но не обязательно подряд. Или можно?
Есть есть такой ответ https://t.me/natural_language_processing/2827

> Но с помощью rule как я понимаю нельзя написать правило, которая говорило бы, что в тексте обязательно встречаются несколько слов, но не обязательно подряд
Да, так в yargy нелько. По ссылке выше мысли как это обходить
источник

ДЛ

Дмитрий Лейкин... in Natural Language Processing
Жаль. Мне бы в идеале что-то вроде regexp match, но умеющее работать со словоформами.

Я в общем уже понял как сделать это если просто надо найти несколько слов в тексте, для этого в такую функцию надо подать массив правил:

def get_count(rules, text):
   results = []
   for rule in rules:
       parser = Parser(rule)
       results.append(sum(1 for x in parser.matches(text)))
   return min(results)


Но вот если я хочу взять такое правило:

rules['всероссийский детский центр'] = [rule(or_(
   rule(dictionary({'вдц'})),
   rule(
       dictionary({'всероссийский'}),
       dictionary({'детский'}),
       dictionary({'центр'})
   )
))]


и сделать так, чтобы искало либо аббревиатуру вдц, либо "всероссийский", "детский" и "центр", расположенные где угодно в тексте, то так просто уже не сделаешь.
источник

N

Natalia in Natural Language Processing
для тех, кто хочет пользоваться НКРЯ и разными другими корпусами не через веб-интерфейс: вообще-то есть пакет lingcorpora
вот такой:
https://lingcorpora.github.io/lingcorpora.py/html/index.html
источник

N

Natalia in Natural Language Processing
но с таким форматом не всегда понятно, конечно, какую часть примеров вам вообще дают посмотреть и в каком подкорпусе (если они есть)
источник

KD

Konstantin Dolgikh in Natural Language Processing
Немного странный вопрос: некоторое время назад на просторах Телеграма я видел канал, на котором русскоязычные тексты с редким включением в них англоязычных слов. Не подскажете, где его сейчас найти?
источник

V0

Vlad 0xd728c4a7cd55d... in Natural Language Processing
Defragmented Panda
я привык что система обучается на неизменных данных, и обучается всего однажды ну или всего несколько раз когда требования ответа меняются

если нужно чтобы система постоянно дообучалась на данных которые могут меняться (назад в прошлом тоже) - все очень плохо.

я не знаю решений. термин который может помочь - live learning по-моему. и насколько я знаю этого просто пытаются избегать, всей ситуации. найдешь решение - расскажи
я вот это тоже интуитивно понимаю, но есть ли какое нибудь теоретическое фундаментальное доказательство, что если данные в прошлом меняются, то беда-печаль?
источник

AP

Alex Peresmeshnik in Natural Language Processing
Defragmented Panda
я привык что система обучается на неизменных данных, и обучается всего однажды ну или всего несколько раз когда требования ответа меняются

если нужно чтобы система постоянно дообучалась на данных которые могут меняться (назад в прошлом тоже) - все очень плохо.

я не знаю решений. термин который может помочь - live learning по-моему. и насколько я знаю этого просто пытаются избегать, всей ситуации. найдешь решение - расскажи
Генеративная нейронная сеть (GAN) для такого придумана
источник

DP

Defragmented Panda in Natural Language Processing
Vlad 0xd728c4a7cd55d8db
я вот это тоже интуитивно понимаю, но есть ли какое нибудь теоретическое фундаментальное доказательство, что если данные в прошлом меняются, то беда-печаль?
нет.

и это не так уж и плохо.

просто это требует переосмыслить значительную часть обычных методов.

если мы меняем ответ из одного класса на другой, и оба существуют и многие другие обьекты не поменяли свою принадлежность к этим 2 классам - значит что раньше   мы обучили нейронку неправильно (с сегодняшней точки зрения). и если мы учили ее с большим learning rate - нам придется долго ее переучивать с малым learning rate который характерен для обучения в конце.

если класс просто удален - вреда нет. мы все еще получили бонус за счет способности к генерализации, защиты от переобучения и поиска features.

если класс разделился на 2 - вред минимальный. особенно если features (предпоследний слой) уже найдены и нам повезло что их достаточно. переобучаем последний слой.

если 2 класса обьеденили - вреда нет. есть польза от генерализации и features, защиты от переобучения.
источник

DP

Defragmented Panda in Natural Language Processing
и да, gan работает в таких условиях. но и обучается он раз в 100 медленнее.
источник

DP

Defragmented Panda in Natural Language Processing
т.е. весь вред можно свести к более длительному обучению. и автор об этом и говорил изначально.
источник

DP

Defragmented Panda in Natural Language Processing
в теории при количестве (epoch number * learning rate)*2 на новых данных можно переобучить сеть если в прошлом ее учили иначе.

проблема в том что из-за catastrophic forgetting мы можем только обучать сеть всему сразу. если мы доучим ее на части данных - она забудет многое из прошлых данных.

https://en.wikipedia.org/wiki/Catastrophic_interference

насколько я знаю решения к этому нет. но это ближайшее что можно почитать на эту тему.

в теории запрет малых изменений (например при back propagation мы игнорируем все кроме top1% изменений) может снизить этот эффект. но я не видел работ об этом.
источник
2020 August 23

AK

Alexander Kukushkin in Natural Language Processing
Продолжение серии постов про проект Natasha. Что за Наташа? Почему в этот чат? См. https://t.me/natural_language_processing/16962
1. http://natasha.github.io/ner Natasha — качественное компактное решение для извлечения именованных сущностей из новостных статей на русском языке
2. https://t.me/natural_language_processing/17369 Почему Natasha не использует Transformers. BERT в 100 строк.
3. https://natasha.github.io/navec Navec — компактные эмбединги для русского языка
4. https://t.me/natural_language_processing/18186 BERT-модели Slovnet
5. https://natasha.github.io/corus Corus — коллекция русскоязычных NLP-датасетов
6. https://t.me/natural_language_processing/18673 Ламповый стрим про историю проекта Natasha
7. https://natasha.github.io/razdel Razdel — сегментация русскоязычного текста на токены и предложения
8. https://natasha.github.io/naeval Naeval — количественное сравнение систем для русскоязычного NLP
9. https://t.me/natural_language_processing/19507 Обновлённая документация Yargy
10. https://t.me/natural_language_processing/19508 Дополнительные материалы по Yargy-парсеру
#natasha
источник

AK

Alexander Kukushkin in Natural Language Processing
Nerus — большой синтетический русскоязычный датасет
https://natasha.github.io/nerus

Месяц назад был пост про компактный NER из проекта Natasha https://natasha.github.io/ner. Получилось сжать модель в 75 раз, проиграть 1 процентный пункт SOTA BERT от DeepPavlov. Главный ингредиент там огромный синтетический датасет. Компактные модели начинают нормально работать только если обучить их на сотнях тысяч примеров. Мы публикуем архив в репозитории Nerus https://github.com/natasha/nerus, чтобы другие исследователи могли повторить и улучшить наше решении. Про качество разметки и Python-интерфейс в https://natasha.github.io/nerus.

В https://github.com/buriy/spacy-ru на Nerus обучают качественные русские модели для SpaCy, вроде бы получается даже лучше чем в Natasha.
источник