代码修改版

N-gram 语言模型 · 代码修改

直接改写训练与预测的代码,运行后看逐行日志,观察改动如何影响下一个词的概率。

目标实验目标

打开 N-gram 的「引擎盖」:统计函数 count_ngrams() 与 预测函数 predict_next()。修改其中的参数与公式,运行后从日志里逐步核对每一步的计算。

操作代码里黄色虚线标注的数字可以直接点击修改。改完点「运行代码」,右侧日志会逐行打印真实计算过程。

代码可编辑源码

ngram_lm.js — 点击黄色数值修改

设置预测场景

提示选「香蕉」再运行,看看 smoothing 参数取 0 和取 0.5 两种情况,日志如何不同。

监视变量监视

context = -
N = -
temperature = -
smoothing = -
命中次数 = -
候选数 = -

结果预测结果

等待运行…

日志执行日志

点击「运行代码」开始执行…

挑战实验课挑战

挑战 1 · 把 N 改成 3
修改 N = 2 为 3,观察日志里「命中次数」的变化。为什么它变小了?
挑战 2 · 平滑救场
保持前文为「香蕉」,把 smoothing = 0 改为 0.5,再运行。模型从「无话可说」变成了什么?
挑战 3 · 温度实验
把 temperature = 1.0 改成 0.3 和 3.0,对比最高概率值的差异。
挑战 4 · 改公式
把日志里的概率公式从「除以 temperature」改成「乘以 temperature」,结果还合理吗?为什么必须除以?