问题标签 [transducer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 具有最终 R.sum 的 ramda 换能器
我试图了解 Ramda 的传感器。这是来自文档的稍微修改的示例:
但是如果我想对结果数组的元素求和呢?以下(仅添加R.sum
到R.compose
)不起作用:
python - Apertium + Python:POS-tagger不提供表面形式
我正在尝试使用 Apertium 的标记器对一些意大利语句子进行 POS 标记。虽然根据Apertium GitHub 页面,除了形态分析之外,我还应该得到表面形式作为输出,但我只得到分析。我也想要表面形式。我无法推断它,因为标记器不一定标记单个标记,所以我不能简单地标记原始句子并循环它或使用标记器的输出压缩它。
根据 GitHub 页面:
我得到了什么:
我怎样才能得到表面形式?如果我一次提供一个令牌,这不会有问题,因为我会知道令牌是什么。但是一句话,我不知道标记器是如何创建块的。
clojure - 为什么映射转换器的结果包含大于 2 的元数?
问题在标题中。下面我复制源的传感器部分map
:
这是指向其源代码的clojure.core
链接,其中包含 的定义map
。
performance - 了解 Clojure 传感器性能
在较高的层次上,我理解使用转换器不会创建任何中间数据结构,而通过长链操作->>
确实可以,因此转换器方法的性能更高。这在我下面的一个例子中被证明是正确的。但是,当我添加clojure.core.async/chan
到组合中时,我并没有得到我期望的相同的性能改进。显然有些东西我不明白,我会很感激解释。
最后有两个我不明白的结果。首先,为什么使用带有通道的传感器比读取通道中的所有内容然后执行嵌套映射要慢?似乎使用带有通道的转换器的“开销”或其他任何东西要慢得多,以至于它压倒了不创建中间数据结构的收益。其次,这个实在是出乎意料,为什么把数据放到一个通道上,然后把它取下来,然后使用嵌套映射技术比不做通道跳舞而只使用嵌套映射技术要快?(说得更短,为什么chan-then-nested
比nested
?)这一切或部分只是基准测试或随机性的产物吗?(我跑了quick-bench
每一个都有几次相同的结果。)我想知道它是否与into
调用transduce
有关,而在通道版本中根本没有以相同的方式实现。转换器为跨向量或通道应用变换提供了相同的接口,但应用变换的方式不同;这种差异使一切变得不同。
javascript - 为什么撰写从左到右适用于传感器?
示例代码:
我希望该值为 [ 8 ] 而不是 [ 5, 7 ]。
Compose 是右关联的 (reduceRight),但在这种情况下,它表现为左关联。
我心想,也许我的 compose 函数实现是错误的。结果,我拉入了ramda.js并使用了 R.compose,但得到了相同的结果。
难道我做错了什么?或者这是在处理传感器时组合是左关联的场景之一?
clojure - 在 Clojure 中处理大文件时如何利用内存/性能
在处理大量时间序列数据时如何利用内存/性能?
尺寸:~3.2G
行数:~5400 万
数据集的前几行
辅助函数
为了获得最佳性能,我应该尽可能多地将数据检索到内存中。但是,我的笔记本只有 16GB,当我将更多数据检索到内存中时,CPU/内存的利用率几乎达到 95%。
- 我可以在 Clojure 中使用大型数据集进行更好的内存管理吗?
- 我可以保留一个内存缓冲区来存储数据集吗?
- 因为这是小内存环境下的时间序列数据。处理完第一批数据后,可以通过 line-seq 检索下一批数据。
- 请建议使用什么数据结构来实现此功能?
请随意发表评论。
谢谢
python - 根据单词的第一个字符生成输出
我正在尝试使用适用于 Python 的赫尔辛基有限状态技术 (HFST) 设置有限状态传感器。
我希望如果单词的第一个字符是“o”,则输出为“正”,并且如果在同一个单词中有字符,则使用正则表达式为每个字符输出空。
但我不只接受“o”。
到目前为止,我从 HFST 教程中得到了什么:
javascript - 可以使用 HM 类型系统键入受 Clojure 启发的传感器吗?
我有一个纯功能的 Javascript 转换器实现,支持循环融合和短路。请注意,虽然我使用的是 JS,但这并不是理解问题的必要条件。只有类型很重要。
如您所见,折叠有效,但不进行类型检查。揭示类型错误需要一些手动统一:
这两个术语显然不能统一。
转换器是动态语言独有的概念并且无法键入,是我在统一过程中犯了错误还是我的转换器类型(map
/ filtert
)完全错误?
javascript - Ramda.js 转换器:平均结果数组
我目前正在学习使用 Ramda.js 的传感器。(太有趣了,耶!)
我发现这个问题描述了如何首先过滤数组,然后使用传感器对其中的值求和。
我想做一些类似但不同的事情。我有一组具有时间戳的对象,我想平均时间戳。像这样的东西:
当然average
,正如上面所说的那样,它不能工作,因为变换函数的工作方式就像一个减少。
我发现我可以在换能器之后一步完成。
但是,我认为必须有一种方法可以使用迭代器函数(转换器的第二个参数)来做到这一点。你怎么能做到这一点?或者也许average
必须是transducer
(使用compose
)的一部分?
regex - 在不将 XFST 替换规则应用于词典的情况下检测循环馈送交互
以下两个 XFST 替换规则表示循环馈送交互,其中最终结果包括原始形式,因为第一个规则馈入第二个规则,第二个馈入第一个规则。例如,第一条规则将(可选)bat
变为cat
,第二条规则将(可选)cat
变为bat
。
当然,可以将规则应用于词典,然后与原始词典进行比较,但这非常低效。我已经有一种方法可以检测这种涉及两个或多个规则的循环馈送交互(通过使用 python 读取源文件),但它对条件替换不敏感,例如c (<-) b || _ x
.
是否可以通过使用来检测一组规则是否是循环的HFST
,而不必将规则应用于词典?