duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.15K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
#ai #machl 唉,现在中国小团队的『字典机』机器人,真的不足以称之为『人工智能』
侮辱了人工智能这个名词
#Machl #AI 非常希望去学习一些自然语言处理和机器学习相关的技术
至于面向 Compiler 技术向的解析技术,我也不甚了解,我没写过 ANTLR,不知道 LALR、LL、LR 解析算法是怎么执行的,不知道自底向上分析和自底向下推导的区别,不了解 PCRE Regex 匹配算法,不清楚 infix operator 们的优先级和结合性的问题,infixl infilr 傻傻分不清(几乎)

#parser #NLP 至于自然语言处理(NLP),我发现因为可能是考虑过一个比较有幼稚 niave 的梦想『Semic 机器人』的原因,我对结构化自然语言还有点直觉
但是我不是特别了解自然语言,也不了解音标记法(当然不是一个层面的东西)
我觉得这个可以考虑多去分析一些小说什么的来提升

至于机器学习,我看过冰封他学姐写的博文,虽然因为我完全没有 ANN(人工神经网络)和机器学习的基础(其实我有一点 KNN 回归量化评估分析的基础,《算法图解》看的)(数学上,我们最近高二也在上回归,不过和 KNN 那种简单的回归而不是函数回归没有特别大的关系)

理解非常的困难,我不知道啥是 Layer、不知道啥是导数、不知道啥是反向传播啥是 bootstrap 函数,但幸亏我有函数式的基础,所以 fun Scale(d: Weight) = { lf: LossFunction -> { w: Weight -> d * lf(w) } } 这种 FP 风格的 #Kotlin 代码我至少还不至于看不懂,给我尝试去理解这类玩意创造了一个最基本的条件 — 如果你连别人说啥都搞不懂,怎么 get 得到知识点呢?

(事实是,很多(尤其是对于一些比较 trivial 的业务范围,比如 #Android 开发和 #Web 前端来说)工业界的程序员压根不能理解 FP 范式的一些东西,或者使用的理解式变通太多了,以至于直觉不太好)

比如说这个 Haskell 里一些 function 扩展和 Monad 们的 Kotlin 版本,大家可以看看自己看不看得懂(挫败感?

fun <T : Any> T?.toMaybe() = this?.let(::Some) ?: None

尤其是最后那个 #FP CoinductiveList,我也是最近才理解,而这个 fibonacci Sequence 才是最骚的(也很能体现一个 CS lover 的水平 — 你究竟只能算是『工程师』还是能算是『爱好者』呢?):

fib = 1 : 2 : zipWith (+) fib (tail fib)

Prelude> take 10 fib
[1,2,3,5,8,13,21,34,55,89]

-- 数学定义
fib' 1 = 1
fib' 2 = 2
fib' n = fib (n - 1) + fib (n - 2)

(这里是有限构造的 List,不是 Coinductive 的,虽然 Haskell 是 Built-in Laziness 所以可以当成是 Coinductive 的,对应到 Kotlin 就是 Kotlin std 的 Sequence)

想必很多不是特别熟悉 Kotlin,而只是把 Kotlin 写成 Java (甚至 Java 7 而不是 8)的程序员要开始烧脑一战了(
Forwarded from duangsuse Throws
#NEWS #Machl #ANN #music #recommended #Backend #media #bilibili
基于人工神经网络和音符拼接的『学院派』歌声合成引擎 SynthesizerV 1.0 正式发布
#life #dev duangsuse 落实 10:30 准时睡觉『政策』。 🐱

考虑到健康原因(不让自己的努力白费),每晚 10:30(h:m) 必须立即睡觉

== duangsuse::Echo 参考 #Telegram hashtags

duangsuse::Echo 常年利用 hastags 标记消息所含知识领域,并且,这也会为未来 Echo 频道进行简单准确的数据统计带来可能(不然,我也有其他手段,比如 NLP、统计预测)

以下是新的标签实例(不区分大小写、不能保证消息只含这些标签):

== 消息平台部分
#Telegram #zhihu #Github #so #Coolapk #book #wiki

== 注释部分
#life #China #School #Statement #lib #recommended #low #fix
#project #blog #share #Learn #paper
#dev #tech #art #meetUp #conference
#Moha #Haha
#gnu
#Microsoft #Mozilla #WeChat #QQ #Weibo #Tencent #Baidu #Ali #Qihoo
#tools #code

== 程序设计语言部分
#Kotlin #Java #JavaScript #JavaScript_ES6 #TypeScript
#Rust #Go #Swift #Dart #Crystal
#Ruby #Python #Perl #Tcl #Lua #PHP
#C #D #Cplusplus #CSharp #Objc
#Pascal #Fortran #Delphi #Ada #Basic #VisualBasic
#Scheme #Haskell #Scala #Clojure
#TeX #Graphviz
#Octave #Matlab
#Shell
(有些写出来是为了鼓励我去写,其实不一定真的写过)

== 软件平台部分
#Android #Windows #Win32 #MacOS #Java #Java_JVM #CLR #Qt #GTK #Tk #WxWidgets
#CSS #XML #JSON #KDE #Postgres #dotnet

== 软件技术领域部分

#backend #sysadmin #frontend #sysadmin_net

#OI #CS #IT #Informatics

#stat #ann #ann_dnn #machl
#math #math_linearAlgebra #math_discrete
#se #se_dia #se_ci #se_ee
#comm #net #www #web #http #html #mail #wireless
#circuit #embedded #os #db #db_relAlgebra #SQL
#bin #encoding #encoding_audio #encoding_image #encoding_video #encoding_text
#hpc #parallelism #distributed #simd #gpgpu #crypto
#pl #pl_plt #ce_vee #ce #ce_optimize #fp_monad #fp_proof #fp #oop #oop_arch #sp #parser
#algorithm #struct #lists #maps #sets
#security #security_lowlevel
#signalProc #nlp #phonetic
#cg #cg_dip #cg_3d #cg_2d #cg_lowlevel
#gui #gui_animation #gui_layouts #cli #visualization
duangsuse::Echo
其实虽然对于计算机视觉来说,肯定是比简单的计算机图形学生成算法要耗时的 但是可以考虑有一些算法低劣的 spam bot,没有自动生成图片,沿用老图片在,所以可以保存已经判断为 spam 的图片 hashcode 再发封禁 再不济一点,可以找一下有没有图像的 SimHash 实现,先对比图片像素大小,完全等同就对比哈希码,类似就认为是 spam 图片,或者让机器人自动收集所有是 spam 的图片使用机器学习找出其中类似的像素簇、然后按大小模糊判定再加权回归,是个比执行 OCR 算法要好的方案或许吧(考虑到很少有…
因为我也不是机器学习和计算机图形学、信息学、密码学领域的人 #machl #ann #cg ....
自然语言处理我也是正在想办法准备学

所以我只好看看关键字匹配... 发现的确就是分词算法啊

https://github.com/CNBlackListR/CNBlackListSoamChecker/blob/aa281efd716a8c11876d755868125cd117aa38cb/CommandObject/SpamMessageChecker.cs#L37


简而言之,spam 打分算法就是接受 SpamMessage 配置和目标判断消息,返回 possibility 值的函数

这个关键字匹配算法虽然优化过,不过也是『简单』算法,因为它还是得判断 n 次加权(一个关键字判断一次,不能扫描一遍消息一起判断了)

具体的匹配算法就是:

如有字符串 "abcde" 关键字列表 [(1, "a"), (2, "de")]

foreach kw in kws
if strstr(snd kw, mesg) > 0: points +=
fst kw


而 strstr 是 libc 里的一个字符串搜索子串函数

这里要的是匹配,比如我们有字符串

a "hello fish sea world" 和 b "fish"

要判断 b 在 a 里出现了几次,我们可以这样:

枚举 a 里的索引『i』且『i + (b 的长度)小于 a 的长度』(就是所有 b 可能和 a 的某个子序列匹配的索引们)
对于所有 b 里的字符
如果『该字符』等于『a 枚举到的字符』继续判断
假如已经枚举到了最后一个字符,则匹配成功
否则 打断循环,跳过当前字符串的长度 — 我们只需要判断一个字符串,前面的索引 n 都不匹配后面的 x > n 匹配也没有用, skip 掉

好吧,如果你觉得上面的还是难于理解,那么这是一种算法:

它是从这里,Line range 47-75 抽提出来的一种字符序列匹配算法

它有两个输入,String str 和 String part、一个输出,int,返回 str 中 part 子序列的个数

比如 str = "12345ab3243ab..23ab", part = "ab" 输出 3

显然,它要计数数目、检查 str 和 part 相关索引的匹配,有

int count
size si, pi
size matched — 已经匹配的长度

它的逻辑很简单,就是枚举所有 str 和 part 可能重合的索引(str.length - part.length)
(si, pi) =>
再进行 str.subseq[si..].startWith(part) 判断

然后得基于当前的 si 位置再进行匹配,如果成功,则 ++count,如果还在判断 ++matched; ++pi; ++si,如果失败 si += (part.length - matched); pi = 0 // 跳过剩余,重新 match

这样碰到显然不是子序列的,直接跳过就好。

如果你还是无法理解,我正在做动态图....
Forwarded from duangsuse
说到 Spam 自动分类,除开自然语言处理模式识别这种重量级算法,最好用的就是 Naive Bayes Classifier 了,不过这是一种机器学习算法,我自己也只是会 KNN 机器学习推荐系统而已...
https://zh.wikipedia.org/wiki/%E6%9C%B4%E7%B4%A0%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%88%86%E7%B1%BB%E5%99%A8#%E6%96%87%E6%9C%AC%E5%88%86%E7%B1%BB

反正说到机器学习和人工智能,没有一个是简单的,唉... 😢 #machl
#book 今天买到了

#Python #Machl 《零起点 Python 机器学习快速入门》 河海群,电子工业出版社
#hardware 《手把手教你学 FPGA 设计》 潘文名 et al. 北京航空航天大学出版社
#Machl #DIP https://github.com/zhiying8710/geetest_crack

发现了好东西。
= Geetest 是一种「验证不是机器人」(I'm not a robot, captcha)(验证码) 系统,基于「挑战」式检验
基于「生成歪七扭八的数据很容易,让机器恢复它们很难」的「事实?」设计

G2 是移动滑块的验证,用简单卷积识别应该可做
G3 第一部分是纯逻辑(不含「非精确的计算」)验证,直接可做
也可能是 G2 的滑块,通过率都是 99% (OpenCV) #CV
G4 是找七扭八扭又歪的汉字,需要 YOLO3 定位、CNN 识别汉字、CRNN 校验识别正确性
G5 也是一样,加个字典按照「语序」单词顺序就可以了
p_with_random.py
10.3 KB
#Python #NLP #Machl #AI #Algorithm 🤔 这可能是我写过倒数第二辣鸡的代码了……