#Machl #AI 非常希望去学习一些自然语言处理和机器学习相关的技术
至于面向 Compiler 技术向的解析技术,我也不甚了解,我没写过 ANTLR,不知道 LALR、LL、LR 解析算法是怎么执行的,不知道自底向上分析和自底向下推导的区别,不了解 PCRE Regex 匹配算法,不清楚 infix operator 们的优先级和结合性的问题,
#parser #NLP 至于自然语言处理(NLP),我发现因为可能是考虑过一个比较有幼稚 niave 的梦想『Semic 机器人』的原因,我对结构化自然语言还有点直觉
但是我不是特别了解自然语言,也不了解音标记法(当然不是一个层面的东西)
我觉得这个可以考虑多去分析一些小说什么的来提升
至于机器学习,我看过冰封他学姐写的博文,虽然因为我完全没有 ANN(人工神经网络)和机器学习的基础(其实我有一点 KNN 回归量化评估分析的基础,《算法图解》看的)(数学上,我们最近高二也在上回归,不过和 KNN 那种简单的回归而不是函数回归没有特别大的关系)
理解非常的困难,我不知道啥是 Layer、不知道啥是导数、不知道啥是反向传播啥是 bootstrap 函数,但幸亏我有函数式的基础,所以
(事实是,很多(尤其是对于一些比较 trivial 的业务范围,比如 #Android 开发和 #Web 前端来说)工业界的程序员压根不能理解 FP 范式的一些东西,或者使用的理解式变通太多了,以至于直觉不太好)
比如说这个 Haskell 里一些 function 扩展和 Monad 们的 Kotlin 版本,大家可以看看自己看不看得懂(挫败感?
想必很多不是特别熟悉 Kotlin,而只是把 Kotlin 写成 Java (甚至 Java 7 而不是 8)的程序员要开始烧脑一战了(
至于面向 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)(这里是有限构造的 List,不是 Coinductive 的,虽然 Haskell 是 Built-in Laziness 所以可以当成是 Coinductive 的,对应到 Kotlin 就是 Kotlin std 的 Sequence)
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)
想必很多不是特别熟悉 Kotlin,而只是把 Kotlin 写成 Java (甚至 Java 7 而不是 8)的程序员要开始烧脑一战了(
GitHub
ice1000/Ruiko.kt
Kotlin version of Ruiko.fs. Contribute to ice1000/Ruiko.kt development by creating an account on GitHub.
#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
考虑到健康原因(不让自己的努力白费),每晚 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
#PL #life https://tttttt.me/dsuses/2959
刚刚和某位大佬聊了一下一个比较特殊 case 的 #NLP 自然语言处理问题:识别切分沾粘的姓名们
😫 真的还是太菜了啊
还是继续马上讲一些理论吧
雷玉嗣 杨翠兴 卢弟积 钟婷婷
房堰佳 高奉善 吴源述 余超伟
李丹丹 李恒佰 朱芳芹 邓恒瑞
许星星 鄧超超 陈婷淑 邓红艳
罗章元 苏梅金
(这些人名经随机打乱其『名』部分,姓依然是第一位)
如果这些名字全都是沾粘的,或许可以用『姓』来作切分符
可是这样又不准确
看来真的是不使用机器学习很难解决的问题呢。
duangsuse /'dʊɔːŋ sjuːz/ | [⃪PLD, FPλ], [15.06.19 20:50]
如果有『解析到某个位置可能出现分支情况』这种问题还不算是问题
最大的问题是『语法本身有冲突』
比如说 Kotlin 里的
Haskell 里语义缩进文法也是有冲突分不清谁是谁的问题
这种问题看起来和 if () 悬垂问题有点像,都是二义性
当然 Java 里可以分,因为 Java 里可以带上 {} 决定语句块结束;而不带的就是就近原则(上面这种 if(c) 属于 if(b))
但我觉得... 你上面说的不是无法消除的二义性
刚刚和某位大佬聊了一下一个比较特殊 case 的 #NLP 自然语言处理问题:识别切分沾粘的姓名们
😫 真的还是太菜了啊
还是继续马上讲一些理论吧
雷玉嗣 杨翠兴 卢弟积 钟婷婷
房堰佳 高奉善 吴源述 余超伟
李丹丹 李恒佰 朱芳芹 邓恒瑞
许星星 鄧超超 陈婷淑 邓红艳
罗章元 苏梅金
(这些人名经随机打乱其『名』部分,姓依然是第一位)
如果这些名字全都是沾粘的,或许可以用『姓』来作切分符
可是这样又不准确
看来真的是不使用机器学习很难解决的问题呢。
duangsuse /'dʊɔːŋ sjuːz/ | [⃪PLD, FPλ], [15.06.19 20:50]
如果有『解析到某个位置可能出现分支情况』这种问题还不算是问题
最大的问题是『语法本身有冲突』
比如说 Kotlin 里的
>=
在分词时就不能处理,当然这还比较特殊Haskell 里语义缩进文法也是有冲突分不清谁是谁的问题
这种问题看起来和 if () 悬垂问题有点像,都是二义性
if (a)请问如果不看缩进,那 if (c) 语句是 if (a) 块里的呢.... 还是 if (b) 里的?
if (b)
if (c)
当然 Java 里可以分,因为 Java 里可以带上 {} 决定语句块结束;而不带的就是就近原则(上面这种 if(c) 属于 if(b))
但我觉得... 你上面说的不是无法消除的二义性
Telegram
duangsues.is_a? SaltedFish
NLP 部分和我们编译原理的解析器理论是相通的,但首先
+ 我只会写比较好看的递归下降法解析器
+ 实际上在 Parser Compiler (Compiler Compiler, 比如 re2c, yacc, bison) 和 Scanner generator 领域(对应 Lex-Yacc Style Parsers)
他们基本都用 NFA, DFA 这种自动机(上面的 NFA, DFA 都只是根据下一个状态属性命名的自动状态机的类型)
实际上,函数式编程向的人们基本都会直接用一段程序的状态替代…
+ 我只会写比较好看的递归下降法解析器
+ 实际上在 Parser Compiler (Compiler Compiler, 比如 re2c, yacc, bison) 和 Scanner generator 领域(对应 Lex-Yacc Style Parsers)
他们基本都用 NFA, DFA 这种自动机(上面的 NFA, DFA 都只是根据下一个状态属性命名的自动状态机的类型)
实际上,函数式编程向的人们基本都会直接用一段程序的状态替代…
duangsuse Throws
对 drakeet 的一些话 by duangsuse 现在已经可以在 Telegraph 上访问... 懒得统计字数行数链接数了,虽然写的时候也快写完了,但是因为字数有限制,还是不得不裁了很多本来打算加上的内容。
修订文章的过程中,发现了一个有趣的事情
因为我有刻意去斟酌文字,希望尽可能让标点符号用的更符合直觉。
对 drakeet 的一些话(内联)
有一段话:
“黑历史”是曾经不完美的见证,但它对自己而言也不是没有用处
我给它的第一段修改成了
“黑历史”是曾经不完美的见证,但它对自己而言也不是没有用处的
+ “独立”了一个句子,把『因为』连词去掉
+ 然后把逗号改成了句号
因为我之前一直思量着有一个基于 NLP 的软件内被设计出来,所以也一直有在想它功能的一些事情,其中就应该要包含类似语法检查的功能,但是语法自动重构可不可以呢?
这类句子应该怎么泛化抽提出其模式,来用于模式匹配和重构呢? #NLP
因为我有刻意去斟酌文字,希望尽可能让标点符号用的更符合直觉。
对 drakeet 的一些话(内联)
有一段话:
“黑历史”是曾经不完美的见证,但它对自己而言也不是没有用处
的,因为
一个优秀的人时常要复习一下自己的黑历史、记住自己曾经的误解、不确定,来为自己的未来提供一个完整的排除名单。错误不再重复第二遍。我给它的第一段修改成了
“黑历史”是曾经不完美的见证,但它对自己而言也不是没有用处的
。
我做了一件事情:+ “独立”了一个句子,把『因为』连词去掉
+ 然后把逗号改成了句号
因为我之前一直思量着有一个基于 NLP 的软件内被设计出来,所以也一直有在想它功能的一些事情,其中就应该要包含类似语法检查的功能,但是语法自动重构可不可以呢?
这类句子应该怎么泛化抽提出其模式,来用于模式匹配和重构呢? #NLP
Telegraph
对 drakeet 的一些话(内联)
就像没有万能药、人被杀就会死一样,现实就是现实;没有人生而知之,也很少有人天生被限制种种不能。只要你想做,你做的到;但在做到之前,要先付出精力和时间去学习、去尝试,如果失败了就再试一次、再试一次,直到成功。我知道这种策略听起来就很傻,很少有聪明人会真正这么做 — 他们会先想有没有直达的捷径、有没有不费力气不浪费时间的方法。 很不幸,真正聪明的人是极少数的,不过你也可以伪装聪明人:拿时间去换,比他们多花甚至十倍的时间去做某件事情,直到和他们一样为止。 吃力不讨好,这真是非常蠢的办法,所以有的人放弃、有的人…
Forwarded from duangsuse Throws
#bing #nlp https://telegra.ph/zh-ast-02-26
🌚我拿我和别人的“代码块的数据结构”文章链接来提纲,结果是:没讲明白出什么来.. 原文 https://tttttt.me/dsuse/18071
它也没get 到列表是非嵌套的,Node才允许嵌套.. 甚至把一篇技术文的观点主旨搞错了。给的例子虽然能执行但比较复杂
只能说有参考价值,语言逻辑通顺,但没有达标。
唉,如果我是应用或游戏程序员,生活大概会轻松不少吧。 不止冷🥶知识详解,再过几年整个项目说不定都能自动生成了,调个颜色就能卖钱... 最重要的是,学编程的难度大大降低了(至少对墙外如此❤️
可不敢质疑AI只是在广撒网复制粘贴,这货连常用的算法和递归都能解读与执行甚至缝合.. 是聪明的。好时代 来临力
( 感觉对做题家不是很公平呢,他们烧脑对那么多领域出题解题, 最后AI竟对题目题解描述的更清晰..
🌚我拿我和别人的“代码块的数据结构”文章链接来提纲,结果是:没讲明白出什么来.. 原文 https://tttttt.me/dsuse/18071
它也没get 到列表是非嵌套的,Node才允许嵌套.. 甚至把一篇技术文的观点主旨搞错了。给的例子虽然能执行但比较复杂
只能说有参考价值,语言逻辑通顺,但没有达标。
唉,如果我是应用或游戏程序员,生活大概会轻松不少吧。 不止冷🥶知识详解,再过几年整个项目说不定都能自动生成了,调个颜色就能卖钱... 最重要的是,学编程的难度大大降低了(至少对墙外如此❤️
可不敢质疑AI只是在广撒网复制粘贴,这货连常用的算法和递归都能解读与执行甚至缝合.. 是聪明的。好时代 来临力
( 感觉对做题家不是很公平呢,他们烧脑对那么多领域出题解题, 最后AI竟对题目题解描述的更清晰..
Telegraph
zh-ast
你好,这是必应。我可以帮你概括这两个知乎回答。😊 程序为什么要编译为语法树而不是语法列表或语法图? 语法树是一种简单而有效的数据结构,可以表示程序的结构和语义。 语法列表和语法图都有各自的优缺点,但都不如语法树适合编译器的设计和实现。 语法列表是一种线性的数据结构,可以表示程序的顺序和嵌套,但不能表示程序的分支和循环。 语法图是一种非线性的数据结构,可以表示程序的任意控制流,但也带来了复杂性和开销。 语法树可以通过变量和let表达式来模拟语法图的特性,但也保持了简洁和高效。 这个回答引用了12两个例子来…