基于 giscus 为网站添加评论系统
giscus 是一个简单易用的评论系统,它使用 GitHub Discussions 的作为存储和管理评论的后端。网站的访客可以使用 GitHub 账号登录并发表评论,当有新评论时 GitHub 还会用邮件通知网站的主人。
本文记录了基于 giscus 为网站添加评论系统的过程。整个过程还算比较顺利,但中途遇到的关于一键配置多个页面展示评论系统的问题也困扰了我很久。将其记录于此,希望能帮助自己和他人。
giscus 是一个简单易用的评论系统,它使用 GitHub Discussions 的作为存储和管理评论的后端。网站的访客可以使用 GitHub 账号登录并发表评论,当有新评论时 GitHub 还会用邮件通知网站的主人。
本文记录了基于 giscus 为网站添加评论系统的过程。整个过程还算比较顺利,但中途遇到的关于一键配置多个页面展示评论系统的问题也困扰了我很久。将其记录于此,希望能帮助自己和他人。
中文写作是许多人工作和生活的重要内容之一,在写作中使用准确的用词和清晰的句法,能够帮助文本的阅读者快速且正确地理解作者所表达的意思。如果一段中文文本存在大量错字(例如由于书写错误导致出现不存在的汉字)、别字(每个汉字都存在,但由于字音、字形相似但意义不同而混淆了搭配)和语法错误,这将使读者感到十分困惑,影响阅读体验。
在错别字层面,现代数字化的文本大多由用户通过输入法进行编辑,输入法内置词典的正确性使得文本不易形成错字,但由于输入时选中文字的疏忽、对词语搭配具有错误的认知等原因,别字的问题依然经常出现。在正式的书面写作中,使用未经组织的、口语化的文本也经常导致语法错误的出现。在语法层面,由于用户在文本输入法,语音输入法使用上的随意性,后续又缺少审核,极易产生语法错误内容。近年来随着自媒体的热潮,人人都是信息的生产者,互联网上语法错误的内容暴增,但语法不通顺的文本极大影响了用户体验。
为实现中文文本纠错、提高汉语使用的正确性,同时减少人工校验的成本,本文初步探讨了基于深度学习的中文文本错误识别与纠正模型,包括它的核心目标、从输入数据到输出数据的流程、训练模型需要用到的数据来源、使用的前沿模型以及现有论文的测试效果等。
私募排排网的数据仅针对部分人群开放,因此在获取数据时有诸多不便。例如,网站需要用户登录才能访问、数据 CSS 样式类别名称被加密等,这些障碍使得我们无法通过常规的爬虫手段方便地获取数据。
本文尝试了多种方法爬取私募排排网的数据,包括 selenium
、浏览器工作流自动化的 Automa 插件和嵌入在浏览器开发者工具的 Web Scraper 插件。最终可行且易用的方法是使用 Web Scraper 插件,它在制作和使用爬虫程序时都十分简便。
本文介绍了 GRU 的网络结构,梳理了 GRU 的前向传播关系,即 \(t-1\) 时间步的隐状态 \(h_{t-1}\)、\(t\) 时间步的输入 \(x_t\)、更新门 \(z_t\)、重置门 \(r_t\) 和 \(t\) 时间步的隐状态输出 \(h_t\) 之间是如何转换的。为了更好地理解 GRU,本文给出了各个张量的维数大小关系的数值示例。最后,本文提供了使用 PyTorch 实现一个 2 层 GRU 模型的代码。
matplotlib
动态绘图——神经网络训练过程可视化本文使用 matplotlib
实现动态绘图,可以用于查看神经网络训练过程的损失值和评估指标的变化情况。
本文部分代码参考了《动手学深度学习》的
utils.py
中的函数。
本文基于某饮料企业的工厂、仓库与商品相关的历史信息,结合随机模拟的售价与成本数据,构建了多工厂、多仓库的生产与补货优化模型。
数值试验表明,本文构建的优化后的生产与补货模型能够比基线模型(简单基于历史销量而固定生产量)多获得约 500 万元的利润,且在补货行为上更具优势。对工厂和仓库容量的灵敏度分析表明,工厂 2 和 DC4、5、7、14 多具有当前容量较小、运输成本低、历史销量高等特点,对它们进行扩容能够取得显著的回报增益。对整托约束的松弛表明,整托运输虽以节省运输成本为目的,但实际却可能造成运输资源的浪费,而考虑适当放松整托约束有潜力能够提高约 100 万元的利润。
本文使用 8 种经典的分类器,基于逆概率错误进行 Conformal Learning。
本文使用了 nonconformist
包,它在使用 Conformal Learning 进行分类预测时的核心步骤是:
InverseProbabilityErrFunc
,它等于 1-predict_probability[true_y]
。例如,某个样本的真实标签是 1,而模型预测出该样本属于标签 1 的概率是 0.9,则 ErrFunc 的值是 1-0.9=0.1。本项目的完整展示文件在这里。
本文整理了深度学习期末考试 Cheat Sheet。内容包括:
PDF 版 Cheat Sheet 在这里。
本文基于强化学习 DQN 算法,训练了一个登月着陆机器人。它能够采取向左右移动、向下喷射减缓速度等动作,在有干扰的环境下准确地降落在月球表面的指定区域。
本文使用 Python 实现了 Dijkstra 算法求解最短路径问题。在算法实现中,使用数组存储网络中各结点之间的距离,使用二叉堆存储 T 集合,并尽量使用向量化计算加快运行速度。
最终在三种网络结构下的运行时间为:
输入文件 | grid_150_150 | random_20000_40000 | dense_1000 |
---|---|---|---|
运行时间 | 302.93ms | 292.14ms | 135.29ms |
但在最开始实现 Dijkstra 算法时,我的程序需要花 5 秒才能完成计算。经过逐步优化,运行时间可以降为 3 秒甚至 0.13 秒。把算法效率优化到极致的过程是非常有收获的,既加深了对算法本身的理解,又学习了许多优化算法的经验。
优化算法的经验
NumPy
等科学计算库的实现细节。例如,在 NumPy
中,np.ones
和 np.empty
都可以用来创建指定形状的数组,其中 np.ones
会创建一个填充 1 的数组,而 np.empty
会在一块内存上创建一个未初始化的数组。由于 np.empty
不会进行初始化,因此生成速度要比 np.ones
更快。dtype=np.int32
或者 dtype=np.int16
,节约内存空间。不同整数数据类型所能表示的整数范围如下:Type | Capacity |
---|---|
Int16 | (-32,768 to +32,767) |
Int32 | (-2,147,483,648 to +2,147,483,647) |
Int64 | (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807) |