Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#nlp #spellchecking

Продолжаю работать с contextualSpellCheck. Хотя они оказались не так плохи, как я вначале подумал, они всё же налажали. Их либа рассматривает только 10 вариантов подстановки от нейронной модельки, и изменить это число невозможно без перекомпиляции (шучу, это же питон, можно просто отредактировать исходники). Не глупость ли это? Ну спасибо, ребята, что за всех решили, что 10 кандидатов будет достаточно. Кстати, это прямо частый паттерн, когда создатели библиотеки часть внутренних параметров хардкодят и забывают открывать. Понятно, что для их повседневных задач это не оказалось нужным, а остальным-то что делать?

С top_n=1000 на предыдущем примере получается уже более осмысленный ответ, Cuba вместо точки, и даже правильный ответ Dubai мелькает.

Но тут уже удивляет пакет editdistance. Каким образом у них Cuba более похожа на dubia, чем Dubai?
#python #npl #spellchecking #bayes

А, понял, в чём дело. Я почему-то думал, что расстояние Левенштейна учитывает перестановки, а на самом деле туда входят только замены, вставки, удаления. Тогда действительно Dubai->Cuba это замена и удаление, Dubai->Dubia это удаление и вставка. + contextualSpellCheck при сравнении кандидатов не учитывает регистр, так что d и D у него различные символы. Что мне нужно, так это более общее расстояние Дамерау-Левенштейна, которое уже учитывает свопы.

От Берта кандидаты приходят с такими вероятностями: ('Cuba', 0.00026), ('Dubai', 0.00017). contextualSpellCheck из представленных кандидатов выбирает ответ наиболее похожий на саму опечатку. Хотя в докстринге они говорят "At present using a library to calculate edit distance between actual word and candidate words. Candidate word for which edit distance is lowest is selected. If least edit distance is same then word with higher probability is selected by default", это неправда, на вероятности в методе candidate_ranking вообще не смотрят. Мы могли бы пойти тем же путём и получить правильный ответ, но это ненаучно, и было бы, видимо, просто везением ) Не зря же Берты тренировались на огромных массивах текстов? Давайте посмотрим, кто победит, если мы будем рассматривать Бертовы вероятности как априорные, а текстовые схожести (в смысле Дамерау-Левенштейна) кандидата и опечатки как вероятность B/A что правильный ответ - это кандидат A, при том что человек напечатал B. Мне всё-таки интересно, в Дубай сложнее визу получить, или на Кубу?

В нашем случает полную вероятность P(B) вычислять не надо, она константна для всех кандидатов и на аргмакс не влияет. Получается, нам надо выбрать кандидата с максимальным произведением вероятности Берта на похожесть с опечаткой. Строго говоря, Бертовы вероятности можно еще нормировать на сумируемость к единице, т.к. у нас ограниченная выборка кандидатов из всего словаря, но это опять же будет константа, и на выбор не повлияет.
👍2
#python #codegems #awefulcode

Улучшаю корректор письменных ошибок. Не могу не отметить "крайне оптимальный" подход к профилированию. Если у класса установлен флаг performance, по задумке авторов, каждый шаг конвейера замеряется на время выполнения. Как же этого добиться, спросите Вы. Элементарно, отвечают авторы чудо-либы, мы просто задублируем в ветке с performance весь код, но воткнём перед каждым вызовом своего метода (?) вызов текущего времени. Чуваки, вы про параметризованные декораторы в Питоне слышали, ау?
#python #npl #spellchecking #bayes
Итак, после нескольких часов допиливания конструктор contextualSpellCheck обзавёлся несколькими новыми параметрами:

top_n (int, optional): suggestions from underlying ANN model to be considered. Defaults to 10.
lowercased_distance (bool, optional): lowercase candidates before computing edit distance. Defaults to True.
damerau_distance (bool, optional): additionally account for symbol swaps when calculating a distance. Defaults to True.
bayes_selection (bool, optional): use bayes reasoning when selecting the best candidate. Bert probabilities are the prior, textual similarities of candidates to the input are treated as the probabilities B/A that the corect candiadte is A, while the input was B. Defaults to True.
ranked_bert_probs (bool, optional): use ranked probs as oppposed to the absolute probs values coming from Bert. Defaults to True.

И я научил электронного болвана понимать, что имелась в виду виза в Дубай. 😁
#python #npl #spellchecking #bayes

Вот разбивочка, как Байесовский метод приходит к выводу, что подразумевался Дубай.
1👍1
#python #npl #spellchecking #bayes

Это мы брали ранговые оценки вероятностей, для смягчения приора. Если же сильно поверить Берту и взять абсолютные оценки, Дубай улетает за первую десятку. Я не знаю, если честно, насколько хорошо Берты откалиброваны по вероятностям, может, @tech_priestess подскажет?

По итогу внёс в либу contextualSpellCheck предложение новой функциональности. А ну как удастся прокрасться в контрибьюторы почти что Spacy. )
❤‍🔥1👍1
#H100

Не очень понимаю историю с H100. Анонсированы он чуть ли не год назад, но в сторонних облаках начинают появляться только сейчас.

"Клиенты Google Cloud смогут тренировать и запускать приложения ИИ через виртуальные машины A3 и использовать службы разработки и управления ИИ Google, доступные через Vertex AI, Google Kubernetes Engine и Google Compute Engine. Виртуальные машины A3 основаны на чипах Intel Xeon четвёртого поколения (Sapphire Rapids), которые работают в связке с ускорителями H100. Пока не ясно, будут ли виртуальные CPU поддерживать ускорители логических выводов, встроенные в чипы Sapphire Rapids."

https://3dnews.ru/1086582/google-anonsirovala-noviy-iiorientirovanniy-superkompyuter-a3-s-26-000-graficheskih-protsessorov
#python #langdetect #fasttext

Мне трудно поверить в это, но в 2023 у питоновского сообщества, похоже, нет нормальных оффлайновых детекторов языка.
Ну что это за хрень, из 4 либ, представленных в статье, только Гугл переводчик (онлайновый) понимает, что, блять, строка "Safe delivery" - это английский, а не датский и не суахили?

P.S.:

fastText справился! ) используйте его, не тратьте время на остальной мусор. Пример в комментах.

https://towardsdatascience.com/4-python-libraries-to-detect-english-and-non-english-language-c82ad3efd430
🤯2
#python #langdetect #fasttext #googletranslate

Странно, я был уверен, что гугл переводчик это топ, там же большие языковые модели, нейросети, все такое. Но он походу в 10 раз больше ошибается, чем fasttext.
💔2
#fastText

Так, я вообще в тупике. Стал внимательнее смотреть, что fastText считает не английской речью.
🤔1
#nlp #mlm #transformers

Друзья, а какая из публично доступных моделей сейчас считается SOTA для мультиязыкового masked language prediction? Bert-ы что-то не вдохновляют.

капец. похоже, ошибку нашёл в contextualSpellChecker.
для "Я ушл в магазин.", bert-base-multilingual-cased предлагает топовый ответ '##шел' с вероятностью 0.3896,
Либа думает, что решётка означает склейку токенов, и склеивает очищенный от решёток вариант с предыдущим токеном. Хотя, кажется, Берт имеет в виду вовсе не склейку с предыдущим токеном, а скорее склейку с текущим токеном, но выброшенными посл 2-мя символами. А, нет, это уже глюки. ## это просто признак субтокена.
#business #news #projects

Пока с облачным проектом неожиданный затык (ограничения по скрейпингу AWS), решил переключиться обратно на прогнозную модель для трейдинга. Собираю сегодня допинфо о параметрах биржевых сессий и ГО, и вернусь к блокам фичей.
🔥1
Forwarded from MMMeme Channel
1🌚1
В первый раз сегодня повзаимодействовала с банкоматом нового типа, в хипстерском стиле таким, с огромным экраном. Написано было у него на этом экране "заплатить через Сбербанк онлайн".
Ткнув туда, узнала, что можно действительно не вставлять в него карту, а просто через приложение два раза отсканировать QR-код, и банкомат даст денежек 😱
До сих пор не могу привыкнуть к этим новшествам всем...
Помню, у меня первая банковская карта только в 20 лет появилась. И ещё лет пять я с нее просто снимала кеш, и кешем за все платила, а саму карту никуда не тыкала, кроме банкомата. Только лет в 25 приучилась самой картой платить... а там уже мне беспроводную карту дали, которую не только тыкать, но и прикладывать можно.
Лет в 28 начала впервые пользоваться приложением банковским - и то потому что поехала в Лондон, и мне там дали карту банка, у которого не было банковских отделений, и все делалось через это приложение... только после этого поняла, зачем это все нужно, и на российские приложения также стала обращать внимание и устанавливать их себе. Теперь уже и вспомнить трудно, как это я так без приложений всем пользовалась.
Единственное, что вызывало у меня опасение — это оплата с помощью NFC-чипа в телефоне. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем NFC-чип. Но я знаю, что рано или поздно перейду и на эту дрянь. 😄

P.S. Капец я мамонт, конечно))
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣1