Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Posts Tagged ‘вікіпедія

Як написати бота до Telegram?

with 5 comments

Легко. 🙂 Давайте напишемо бота який перекладатиме нам всяке з німецької:

Приклад діалогу

Для цього нам треба поговорити з botFather-ом:

А зараз трохи не по темі цієї статті. Ось код який перетворює вікідані на словник, шукаючи всі сутності які мають мітки однією мовою, а потім показучи їх мітки іншою мовою, використовуючи хитрий запит SPARQL:

import json
import requests

def translate(from_lang, to_lang, word):
    '''
        Переклдає мітки елементів вікіданих з мови на мову. Повертає список варіантів перекладу
    '''
    res = sparql('''
        SELECT  ?ukLabel WHERE {
          ?item ?label "%s"@%s.
          ?item rdfs:label ?ukLabel filter(lang(?ukLabel) = "%s")
        } LIMIT 10
    ''' % (word, from_lang, to_lang))
    return list(map(
        lambda e: e['ukLabel']['value'],
        res['results']['bindings']
    ))

def sparql(query):
    ''' Отримує JSON дані запиту SPARQL до вікіданих '''
    res = requests.get(
        'https://query.wikidata.org/sparql',
        params={
            'query': query,
            'format': 'json'
        }
    )
    return json.loads(res.text)

А тепер повертаємось до теми телеграмного бота. Аби його написати треба поставити бібліотеку:

pip install pyTelegramBotAPI

Ось її Github: https://github.com/eternnoir/pyTelegramBotAPI

А далі – елементарно як писати консольну програму:

import telebot

TOKEN = '' # тут вставити те що BotFather сказав

bot = telebot.TeleBot(TOKEN)

@bot.message_handler(content_types=["text"]) # Якщо прийдуть нові повідомлення
def respond_to_message(message):
    translations = translate('de', 'uk', message.text) # Отримати переклади тексту повідомленя
    resp = '\n'.join(translations) if translations else 'На жаль, перекладу слова %s не знайдено' % message.text
    bot.send_message( # відправити назад
        message.chat.id, # в той самий чат з якого прийшло (можна напевне й в інший)
        resp
    )

if __name__ == '__main__':
     bot.polling(none_stop=True) # Запустити бота аби той сидів на лінії і слухав повідомлення.

Поки що все, бо й висипатись іноді треба. Пізніше нагадайте мені не забути написати більше про SPARQL, як поставити собі локальну mediawiki і розширення до неї, як логінити сторонні застосунки через OAuth, і як переписати інтерфейс вікіпедії на Vue.js. 🙂

Written by bunyk

Травень 22, 2017 at 01:51

Оприлюднено в Кодерство, Павутина

Tagged with ,

Подарунки Україні до Дня Незалежності

with 4 comments

Найперше, я купив найдорожчу книжку яку купляв в своєму житті: Шлях до кріпацтва. Витратив на неї 2000 грн (хоча були люди які витратили більше), тепер можу подарувати.

Але є ще кращий подарунок. Добре було б зробити “смерть ворогам”, та, на щастя є ті хто краще за мене це можуть. Ще краще було б зробити “асиміляцію ворогам”. Це і гуманніше, і страшніше для ворога. Тому, як крихітний крок що цього – моя операція в рамках поточної кібервійни, під умовною назвою “засуньте язик за поребрик”. Назва придумана під впливом кібервійськ, до яких я, на жаль, жодного стосунку не маю, не доріс.

Все почалось з того що я якось читаючи вікіпедію, переходив за посиланнями, відкривав статті і перейшов на статтю російською. Спершу нічого не зрозумів (Бо за останніми даними українці російською не володіють), а потім мене це розізлило, бо як виявилось такі випадки непоодинокі. І це в той час, коли українською є кращі і точніші статті на цю ж тему. Іноді посилання на рувікі були червоні (відкриваєш, а там запрошення створити статтю), хоч виглядали синіми. І ці посилання зустрічались трохи більше ніж в 2000 статтей.

Сприймати інформацію російською мовою окрім того що важко (бо, як я вже зауважував, нею мало хто володіє 😉 ), але й небезпечно. Тому що російськомовне світосприйняття, кхм, кхм, дещо викривлене. Ось приклад:

Труднощі перекладу

Труднощі перекладу

Про всякі дивні поняття на зразок “Дреєвнєруское государство” і т.п. взагалі промовчу, то було ще здається до збройної війни і обговорювалось.

А чим більше посилань кудись існує, тим більший там PageRank, тобто логарифм ймовірності того що випадково блукаючи сторінками ви на якусь потрапите.

Короште, аби довго не розказувати вам деталі, доповідаю результати. Я трохи попрацював, завів бота, який теж добряче попрацював, і з цих 2000 посилань, залишилось менше 50 тих які вже таки треба (в основному посилання на всякі документи СРСР).

Тепер треба буде те саме з англійською і іншими мовами зробити. Може хтось хоче допомогти? Поділюсь своїм одноразовим недосконалим скриптом. А то я вже замучився з тою рутиною, хочеться чимось творчішим зайнятись. Наприклад написати про нову мову програмування. І роботою зайнятись.

Written by bunyk

Серпень 24, 2016 at 10:05

Оприлюднено в Нещоденник

Tagged with

Звідки взялось танго?

with 4 comments

У вікіпедії я з командою пишемо статтю яка розповість про танго все в найдрібніших деталях. Поки що можна прочитати як воно виникло. Я знаю (бо бачу статистику переходів) що вам неохота багато читати, тому я викладу тут найцікавіші фрагменти з тої історії. Після чого поділюсь своїми пошуками того як танго з’явилось у Львові, і взагалі складнощами написання статтей на основі пошуку. Бо потрібна допомога, тому що я точно знаю що є люди які знають більше.

Але спершу про те що писало у вікіпедії іспанською. Якщо ви щось чули про те що танго з’явилось в борделях Буенос-Айреса, то вас майже правильно поінформували. Хоча звісно насправді все було ще гірше і ще цікавіше. Отож, справа була портових містах біля гирла річки Ла-Плата:
Прочитати решту цього запису »

Written by bunyk

Травень 7, 2016 at 01:58

Як дописувати до Вікіпедії?

with 5 comments

Мене іноді питають про найелементарніші речі, тому почну з найелементарнішого. Якщо вам щось не подобається у Вікіпедії, і ви знаєте як воно повинно було бути правильно – ось як це виправляється:

Шляхи до редагування Вікіпедії

Шляхи до редагування Вікіпедії

Хоча звісно не все так просто. Іноді ваші зміни можуть не прийняти, тоді варто піти на сторінку обговорення і обговорити всі питаня які виникають.

Також вам крім кнопки “[ред.]” дуже потрібні ще дві речі: сильна цікавість до чогось, і бажання розібратись, та бажання поділитись тим про що довідались з іншими. А далі – деяке знання розмітки, але це не настільки вже й обов’язково. Оформлення вас навчать, головне аби стаття відповідала правилам, тобто мала незалежні від вас джерела і не порушувала авторські права (копіпаст або переклад дозволяється лише з матеріалів під вільними ліцензіями). Тому писати Вікіпедію трохи складніше ніж скачувати реферати з інтернету. 😉 А написати вибрану статтю складніше ніж написати дипломну роботу. Тут трохи про те як пишуться вибрані. Коли сам напишу вибрану – може розповім як і це робилось.

А поки що, розглянемо наприклад як дописувалась стаття про компанію Fujikura, яка відповідає мінімальним вимогам до якості. Той самий підхід працює як і для розширення існуючих статтей, так і для створення нових. Про Fujikura я дізнався завдяки прес-релізу “Міністерства магії”:
Прочитати решту цього запису »

Written by bunyk

Травень 2, 2016 at 13:58

Як написати свій букмарклет?

with 22 comments

Букмарклет (bookmark) – це слово створене поєднанням слів bookmark (закладка) і applet (application (застосунок) + зменшувальний суфікс -let). Таким чином правильним перекладом bookmarklet було б “закластуночок” (чи “застокладочка”), але ви цього краще не кажіть Юрку Зеленому. Але я відхиляюсь. Отож, букмарклет, це маленька програма що міститься в закладці.

Як її туди помістили? Ну, виявляється браузери крім протоколів http, ftp, ітп, розуміють такий протокол як javascript. І коли отримують посилання з цим протоколом, при кліку по ньому не змінюють сторінку, а виконують його href як код JavaScript. Щоб побачити приклад простого букмарклету, створіть документ bookmarklet.htm, і помістіть в нього такий код:

<html>
<head><meta charset="utf-8" /></head>
<body>
<a href="javascript:
    alert('Привіт!')
">Мій букмарклет</a>
</body>
</html>

Прочитати решту цього запису »

Written by bunyk

Березень 10, 2016 at 14:31

За останні кілька місяців

with 6 comments

я мало писав сюди. Не знаю чому. Час насправді міг би знайти. Писати про що я маю. Сили теж мало б вистачити. Але чомусь не траплявся момент коли це було найважливішим з того що я мав би зробити.

Писати – важливе заняття. Воно змінило моє життя, і я сподіваюсь, що навіть хоч трохи змінило світ. Мене вразило, що коли мене недавно знайомили з однією людиною, і повідомили що я ще й трохи блогер, виявилось що він знає мій блог. Хоча тут лише *адцять відвідувачів за день в середньому. Але якщо довго не писати – можна втратити корисну звичку.

Тому коротко розкажу про те чим займався і що думав останнім часом.
Прочитати решту цього запису »

Written by bunyk

Жовтень 4, 2015 at 23:43

Оформленя файлів

leave a comment »

Колись давно, 2010-тому я писав курсову про те як зобразити функцію типу Float -> Float -> Float -> Bool в Blender. Якщо коротко, то є алгоритм крокуючих кубиків, який для об’єму виду f(x, y, z) > 0, приблизно дає його поверхню f(x, y, z) = 0.

Тоді на вікіпідручнику з’явився розділ про те як писати скрипти до Blender. І звісно купа скріншотів.
Прочитати решту цього запису »

Written by bunyk

Жовтень 3, 2015 at 03:58

Оприлюднено в Нещоденник

Tagged with