[Мессенджеры, Python, Twitter API, Машинное обучение, DIY или Сделай сам] Твиттер Илона Маска в телеграме и с переводом на русский
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Хочу поделиться одной моей поделкой, возможно, кому-то она тоже будет полезна. В этой статье я поделюсь тем, что я сделал, чтобы читать Twitter-аккаунт Маска в удобном мне месте и имея под рукой перевод англоязычных твитов на русский.
ПроблемаПоследние несколько лет замечаю за собой, что хочу начать регулярно почитывать тот или иной блог, но если он не находится в зоне удобного или привычного доступа (к сожалению весь твиттер для меня таков, ничего не могу с собой поделать, не читатель я твиттера), то я довольно быстро забиваю на это. Еще хуже, если блог на другом языке, тут появляется дополнительная проблема, когда из-за технических терминов или разговорного жаргона сложно понять смысл. Собственно такие "преграды" обычно и приводят к тому, что вроде бы и хочется, но как-то не делается.ИдеяСейчас я делаю на заказ программных роботов, которые в онлайне обрабатывают новостные потоки в соцсетях, фильтруют, выбирают наиболее интересные и цитируемые, и передают заказчику. Я подумал, почему бы мне не использовать свои навыки и не облегчить себе жизнь в описанной выше проблеме. Для этого нужно только каждые сколько-то минут заходить в твиттер, забирать новые сообщения, прогонять их через переводчик и отправлять в канал в телеграме. Кажется, ничего сложного.Подводные камниПервая проблема, с которой я столкнулся, это фрилансеры, у которых я пытался заказать кусок кода, который непосредственно выгружает новые посты из твиттера, все подряд отказывались от выполнения заказа. Прямо брали, а потом у одного компьютер сломался, у другого появились другие дела, третий в последний момент передумал.Вторая проблема, отказ твиттера в выдаче доступа к API в описанных мной кейсах. То есть остается единственный вариант заниматься веб-скраппингом. Ну что ж.Третья проблема, оказалось, что требуется довольно много ручной работы, чтобы преобразовать пост из твиттера в формат телеграма, и чтобы он прилично выглядел. В частности, картинки, предпросмотры ссылок, упоминания и тд.ТехнологииЯ решил попробовать самостоятельно и начал гуглить что-то вроде "parsing twitter without API". Нашлось достаточно много решений, сразу скажу, что решение twint — библиотека с открытым исходным кодом, которая вполне работоспособна и подошла под мою задачу.Для того, чтобы перевести текст с английского на русский, я сначала было собирался использовать google translate, но понимал, что в нем ограниченное количество бесплатных переводов, решил что попробую использовать единственную известную мне нейросеть для перевода с английского на русский fairseq от Facebook AI Research. Качество перевода показалось мне вполне приемлемым с точки зрения того, чтобы понять в чем суть твита, хотя оно и не было идеальным.Все это я обернул в скрипт на языке программирования python и запустил на постоянную работу на своем сервере.Примеры кодаЧтобы собрать данные из твиттера без использования выделенных девелоперских доступов, логинов, паролей и API, нужно сделать следующее:Установить библиотеку twint
pip3 install twint
Запустить код формата
twint -u <name_of_twitter_user> -o output.csv --csv --since 2020-01-01 --retweets
Здесь есть важный момент, что запускается это все из-под bash, при том что у библиотеки есть python API (да и написана она на питоне), но при этом я потратил довольно много времени и оно ни в какую не заводилось. При этом если запускать из командной строки - все кроме автоматического перевода постов у меня работало. Из функционала, который есть у библиотеки еще отмечу:
- Возможность искать твиты пользователя по ключевому слову
twint -u username -s pineapple
- Возможность находить твиты пользователя с указанием номеров телефонов и почт
twint -u username --email --phone
- Поиск твитов вокруг определенной локации
twint -g="48.880048,2.385939,1km" -o file.csv --csv
- Сохранение в Elasticsearch или SQLite
twint -u username -es localhost:9200
twint -u username --database tweets.db
- Сохранение фоловеров, подписок и избранных для пользователя
twint -u username --followers
twint -u username --following
twint -u username --favorites
Данные сохраняются в csv файл, в котором присутствуют такие поля как (перечислю те, которые использовал сам, так как их много и большинство несут мало информации):id - идентификатор сообщения conversation_id - идентификатор беседыcreated_at - дата создания сообщенияtweet - текст сообщенияmentions - упоминания пользователей твиттера ( список словарей)urls - вставленные по правилам твиттера ссылки (например на youtube) photos - ссылки на картинки link - ссылка на твит reply_to - список словарей с пользователямя, ответом на твиты которых является твитУ библиотеки есть также возможность перевода на другой язык, но она у меня совсем не заработала. Собственно по этой причине я искал другую возможность. Нашел я, как упоминал выше, открытую разработку Facebook AI Research - библиотеку fairseq, в которой можно скачать веса нейронки для перевода в частности из английского в русский и наоборот.
pip install hydra-core
Итого необходимо было установить:
pip install torch
pip install hydra-core==1.0.0 omegaconf==2.0.1
pip install fastBPE regex requests sacremoses subword_nmt
Вообще мануал по установке и пример использование есть на сайте pytorch, но как видите у меня он немного отличается. Для того, чтобы сделать перевод можно пользоваться следующим куском из примера - он вполне рабочий:
import torch
# Compare the results with English-Russian round-trip translation:
en2ru = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.en-ru.single_model',
tokenizer='moses', bpe='fastbpe')
ru2en = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.ru-en.single_model',
tokenizer='moses', bpe='fastbpe')
paraphrase = ru2en.translate(
en2ru.translate('PyTorch Hub is an awesome interface!')
)
assert paraphrase == 'PyTorch is a great interface!'
В нем два раза производится перевод и проверяется соотвествие результата исходному варианту. При первом запуске с серверов torch хаба выкачивается большая нейронка, которая довольно шустро работает и на процессоре. В целом, если не считать способов использования библиотек, у меня набралось еще довольно много кода, чтобы делать полученные сообщения достаточно читабельными, но это уже детали моего применения.Как пользоватьсяВыглядит сейчас это следующим образом. Каждый твит и ретвит на главной странице твиттера Илона Маска пропускается через переводчик, подбираются ссылки и картинки из поста, дальше все это сохраняется в пост в телеграм-канале. Выглядит это так
Итого у меня получился телеграм-канал под названием "Твиттер Илона Маска" (подписывайтесь, мне будет приятно, что это нужно кому-то еще , будет дополнительный стимул поддерживать в будущем), в котором можно1) читать новые и старые посты Илона Маска2) видеть перевод текста на русский язык3) перейти по ссылке на исходный пост в твиттереИ все это без регистрации и смс.Если эта статья показалась вам интересной, поставьте, пожалуйста апвоут (так ее увидит больше людей) и подписывайтесь на мой блог в телеграме, там я ежедневно рассказываю о всех своих экспериментах. Если хотите решить похожую проблему для своего бизнеса — пишите в личку.
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, Swift, Искусственный интеллект] О том как мы научили машину определять пол человека по его почерку
- [Тестирование IT-систем, PHP, Программирование] «Дело было вечером, делать было нечего» или краткая история о сравнении производительности языков программирования
- [Научно-популярное, Космонавтика, Астрономия] СМИ: SpaceX проигноривала предупреждения регуляторов при запуске SN8
- [Мессенджеры, Криптография, Криптовалюты] Налоговая США начала отслеживать операции с биткоинами в Telegram
- [Open source, Python, Интервью] Разработчик популярного веб-фреймворка FastAPI — об истории его создания и перспективах аннотаций типов Python (перевод)
- [Машинное обучение] Циан.Митап: «MLOps или безопасный воспроизводимый ML для бизнеса»
- [Open source, Программирование микроконтроллеров, DIY или Сделай сам, Электроника для начинающих] я подарю тебе маленькую вселенную
- [Python, Алгоритмы, Big Data, R, Data Engineering] Запросить 100 серверов нельзя оптимизировать код. Ставим запятую
- [Схемотехника, Разработка под Arduino, DIY или Сделай сам, Электроника для начинающих] DIY регистратор молний
- [Мессенджеры, Управление продуктом, Облачные сервисы, Видеоконференцсвязь] Google унифицировала интерфейс Gmail и встроила Google Chat в почту
Теги для поиска: #_messendzhery (Мессенджеры), #_python, #_twitter_api, #_mashinnoe_obuchenie (Машинное обучение), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_tvitter (твиттер), #_telegram (телеграм), #_telegram, #_twitter, #_elon_musk, #_ilon_mask (илон маск), #_python, #_messendzhery (
Мессенджеры
), #_python, #_twitter_api, #_mashinnoe_obuchenie (
Машинное обучение
), #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:49
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Хочу поделиться одной моей поделкой, возможно, кому-то она тоже будет полезна. В этой статье я поделюсь тем, что я сделал, чтобы читать Twitter-аккаунт Маска в удобном мне месте и имея под рукой перевод англоязычных твитов на русский. ПроблемаПоследние несколько лет замечаю за собой, что хочу начать регулярно почитывать тот или иной блог, но если он не находится в зоне удобного или привычного доступа (к сожалению весь твиттер для меня таков, ничего не могу с собой поделать, не читатель я твиттера), то я довольно быстро забиваю на это. Еще хуже, если блог на другом языке, тут появляется дополнительная проблема, когда из-за технических терминов или разговорного жаргона сложно понять смысл. Собственно такие "преграды" обычно и приводят к тому, что вроде бы и хочется, но как-то не делается.ИдеяСейчас я делаю на заказ программных роботов, которые в онлайне обрабатывают новостные потоки в соцсетях, фильтруют, выбирают наиболее интересные и цитируемые, и передают заказчику. Я подумал, почему бы мне не использовать свои навыки и не облегчить себе жизнь в описанной выше проблеме. Для этого нужно только каждые сколько-то минут заходить в твиттер, забирать новые сообщения, прогонять их через переводчик и отправлять в канал в телеграме. Кажется, ничего сложного.Подводные камниПервая проблема, с которой я столкнулся, это фрилансеры, у которых я пытался заказать кусок кода, который непосредственно выгружает новые посты из твиттера, все подряд отказывались от выполнения заказа. Прямо брали, а потом у одного компьютер сломался, у другого появились другие дела, третий в последний момент передумал.Вторая проблема, отказ твиттера в выдаче доступа к API в описанных мной кейсах. То есть остается единственный вариант заниматься веб-скраппингом. Ну что ж.Третья проблема, оказалось, что требуется довольно много ручной работы, чтобы преобразовать пост из твиттера в формат телеграма, и чтобы он прилично выглядел. В частности, картинки, предпросмотры ссылок, упоминания и тд.ТехнологииЯ решил попробовать самостоятельно и начал гуглить что-то вроде "parsing twitter without API". Нашлось достаточно много решений, сразу скажу, что решение twint — библиотека с открытым исходным кодом, которая вполне работоспособна и подошла под мою задачу.Для того, чтобы перевести текст с английского на русский, я сначала было собирался использовать google translate, но понимал, что в нем ограниченное количество бесплатных переводов, решил что попробую использовать единственную известную мне нейросеть для перевода с английского на русский fairseq от Facebook AI Research. Качество перевода показалось мне вполне приемлемым с точки зрения того, чтобы понять в чем суть твита, хотя оно и не было идеальным.Все это я обернул в скрипт на языке программирования python и запустил на постоянную работу на своем сервере.Примеры кодаЧтобы собрать данные из твиттера без использования выделенных девелоперских доступов, логинов, паролей и API, нужно сделать следующее:Установить библиотеку twint pip3 install twint
twint -u <name_of_twitter_user> -o output.csv --csv --since 2020-01-01 --retweets
twint -u username -s pineapple
twint -u username --email --phone
twint -g="48.880048,2.385939,1km" -o file.csv --csv
twint -u username -es localhost:9200
twint -u username --database tweets.db
twint -u username --followers
twint -u username --following twint -u username --favorites pip install hydra-core
pip install torch
pip install hydra-core==1.0.0 omegaconf==2.0.1 pip install fastBPE regex requests sacremoses subword_nmt import torch
# Compare the results with English-Russian round-trip translation: en2ru = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.en-ru.single_model', tokenizer='moses', bpe='fastbpe') ru2en = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.ru-en.single_model', tokenizer='moses', bpe='fastbpe') paraphrase = ru2en.translate( en2ru.translate('PyTorch Hub is an awesome interface!') ) assert paraphrase == 'PyTorch is a great interface!' Итого у меня получился телеграм-канал под названием "Твиттер Илона Маска" (подписывайтесь, мне будет приятно, что это нужно кому-то еще , будет дополнительный стимул поддерживать в будущем), в котором можно1) читать новые и старые посты Илона Маска2) видеть перевод текста на русский язык3) перейти по ссылке на исходный пост в твиттереИ все это без регистрации и смс.Если эта статья показалась вам интересной, поставьте, пожалуйста апвоут (так ее увидит больше людей) и подписывайтесь на мой блог в телеграме, там я ежедневно рассказываю о всех своих экспериментах. Если хотите решить похожую проблему для своего бизнеса — пишите в личку. =========== Источник: habr.com =========== Похожие новости:
Мессенджеры ), #_python, #_twitter_api, #_mashinnoe_obuchenie ( Машинное обучение ), #_diy_ili_sdelaj_sam ( DIY или Сделай сам ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:49
Часовой пояс: UTC + 5