Size: a a a

Язык программирования Julia / Julia programming language

2020 June 02

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Класс. Спасибо.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
С бинарными зависимостями могут быть проблемы, причём которые непонятно как решать - мне на два вопроса на форуме так никто и не ответил.
https://discourse.julialang.org/t/cannot-import-some-python-packages-due-to-clibcxx-version-mismatch/30695
https://discourse.julialang.org/t/segfault-in-c-library-depending-on-import-order/27362
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
не использовать их 🙂

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

RS

Roman Samarev in Язык программирования Julia / Julia programming language
и, кстати, а зачем xgboost подключать через питон? Есть же джулийный вариант
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Я вот тоже думаю, что в тех случаях, когда есть хорошие с библиотеки и совсем нет желания писать нативный вариант, можно сишный интероп пробовать, хотя это конечно больше работы. Зависит от того, насколько тонкая питоновская обертка.

В своё время я ковырял MxNet и XGBoost, там сишные библиотеки легко довольно подключались.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
Roman Samarev
не использовать их 🙂

Неприятности там могут быть из-за библиотек выделения памяти. Когда какие-то участки кода собраны с разными их версиями. Единственный вариант устранения проблемы - пересобрать весь бинарный код одним компилятором (если речь о C и C++) с одним и тем же комплектом библиотек.
особенно во втором вопросе, который про matplotlib и finufft, не получится так просто "не использовать" бинарные зависимости
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
Roman Samarev
и, кстати, а зачем xgboost подключать через питон? Есть же джулийный вариант
в итоге так и сделал - просто не проверил существование обертки на julia сначала
ну а когда при импорте питоновского пакета вылезла такая ошибка - написал на форум
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
в питоновском варианте очень быстро получается каскад бинарников как следствие языка-обёртки. Отсюда проблемы. Необходимо, чтобы glibc, glibc++, как минимум, были одними и теми же
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
ещё вот это вспомнил: https://discourse.julialang.org/t/could-not-load-library-librsvg-very-strange-error/21276
сейчас конкретно этот случай с pyplot + vegalite работает, пофиксили
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
loading multiple copies of the same dynamic library into your address space логично…
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
Если глубоко раскопать детали - да, логично. Но изначально абсолютно неочевидно, почему
using PyPlot
using VegaLite
может не сработать, если по отдельности эти библиотеки импортируются без проблем.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
я думаю, если пересобрать бинарники под них на той же машине, то проблем не будет
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Не, всё-таки использовать Julia в связке с python/PyCall, очень весело. Все прелести Julia c функционалом питоновских библиотек. Вот например как сделать sentiment analysis для вектора значений

using PyCall
using Underlines

textblob = pyimport("textblob")
tb = textblob.TextBlob
phrases = ["Javascript is fine", "Julia is great"]
@_ tb.(phrases) |> map(_.sentiment, __) |> first.(__)
# 2-element Array{Float64,1}:
#  0.4166666666666667
#  0.8

По сути одна короткая команда (и да, броадкастинга в питоне очень не хватает).
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
скорость же будет никакая
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
тональность высказывания, строго говоря, отдельный вопрос. Очень сильно зависит от словарей и контекста в целом
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
> Не, всё-таки использовать Julia в связке с python/PyCall, очень весело. Все прелести Julia c функционалом питоновских библиотек.

поддерживаю :) я для графиков pyplot использую - по сути, тот же матплотлиб с тем же синтаксисом
иногда другие библиотеки или функции, которых пока нет в джулии - например, из astropy
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
@_
- это уже встроенный макрос для пайпов?
источник

m

motique in Язык программирования Julia / Julia programming language
tensorflow кто-нить юзал с julia, подводные камни есть?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Нет, это Underlines
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Roman Samarev
скорость же будет никакая
Ну, я бы не сказал, что совсем уж медленно (правда я не знаю, какие скорости приемлимые).

using UrlDownload
using BenchmarkTools

txt = @_ urldownload("https://www.linguistik.uzh.ch/dam/jcr:169bff5c-ac13-457b-9acb-4fe7f1ad5cb0/Harry%20Potter%20and%20the%20Sorcerer.txt", parser=String) |> replace(__, r"[^0-9A-Za-z\n\. ]" => "") |> split(__, "\n") |> split.(__, ".") |> collect(Iterators.flatten(__)) |> strip.(__) |> filter(!isempty, __)

deleteat!(txt, 278)

txt2 = txt[1:500]

function sentiments(tb, x)
   @_ tb.(x) |> map(_.sentiment, __) |> first.(__)
end

@btime sentiments($tb, $txt2)
 187.112 ms (10508 allocations: 309.17 KiB)
500-element Array{Float64,1}:


То есть 500 предложений обработались за 0.2 секунды... Вроде неплохо. Правда там предложения короткие, но всё равно, выглядит как вполне обычная скорость для работы с текстом.
источник