当前位置: 首页 > news >正文

KenLM简介及安装使用

一、KenLM 简介
KenLM 是一个开源、高性能 N-Gram LM 库
支持:
1~5 Gram LM
字符级或词级 N-Gram
高速概率查询,适合大词表(中文大字表 V≈7000)
优势:
查询快(C++ 或 Python wrapper)
内存占用优化,支持二进制 LM 文件(.bin)
二、使用场景
1.CTC 手写识别
CRNN+CTC 输出概率矩阵 [T, C]
Beam Search 生成候选序列
用 KenLM 对候选序列打分
2.解码阶段
对每条候选序列:

α 为权重,可调
三、KenLM LM 构建步骤
3.1 语料准备
文本语料最好和手写场景匹配(中文长文本或英文句子)
语料格式:

今天天气真好,我们去公园散步。 今天上午上课内容包括...

3.2 构建 LM

# 安装 KenLM(Linux/macOS 示例)git clone https://github.com/kpu/kenlm.git cd kenlm mkdir build&&cd build cmake..make-j# 构建 trigram LM# 假设语料文件:train_corpus.txt# 输出二进制 LM./lmplz-o3<train_corpus.txt>trigram.arpa build/bin/build_binary trigram.arpa trigram.bin

-o 3 → trigram
.arpa → 原始文本 LM
.bin → KenLM 二进制 LM,高速查询
四、Python 使用 KenLM

importkenlm# 加载 LMlm=kenlm.LanguageModel("trigram.bin")# 计算序列 log 概率seq="今天的天气真好"log_prob=lm.score(seq,bos=True,eos=True)# 包括句首/句尾概率print(log_prob)

五、CTC + Beam Search + KenLM 解码流程
1.CTC 模型输出
[T, C] logits → softmax → 概率矩阵
Beam Search
beam width = K(5~10)
2.每条候选序列记录累计 CTC log probability
KenLM 打分
3.对每条候选序列:

total_score=ctc_log_prob+alpha*lm.score(seq,bos=True,eos=True)

4.选分数最高序列 → 最终识别结果
六、安装kenlm编译遇到问题:

/home/anaconda3/lib/libboost_program_options.so.1.82.0:对‘std::__throw_bad_array_new_length()@GLIBCXX_3.4.29’未定义的引用

1.问题原因:
a.你的系统可能是 GCC < 11,但 libboost_program_options.so.1.82.0 是用 GCC 11+ 编译的
b.Boost 库和系统 C++ 标准库 (libstdc++.so) ABI 不一致
c.典型表现:
KenLM CMake 默认使用系统 GCC
Anaconda 自带 Boost 或 libstdc++ 与系统不一致 → 链接失败
2.解决方案
使用系统自带 Boost 而不是 Anaconda 的

# 移除 Anaconda Boost 路径对编译器的影响export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH export CPLUS_INCLUDE_PATH=/usr/include:$CPLUS_INCLUDE_PATH

或者

cmake..-DBOOST_ROOT=/usr-DBoost_NO_SYSTEM_PATHS=ON
http://www.jsqmd.com/news/550401/

相关文章:

  • Frp内网穿透实战指南:从零搭建到远程访问
  • 拒绝无效CURD!实测用 AI 智能体一键生成“商用级”系统与全套软工文档
  • KubeVirt 虚拟化实践:在 Kubernetes 上运行虚拟机
  • 突破性遥感图像语义分割:GeoSeg革新城市环境智能解译范式
  • OpenClaw 的检索增强中,向量数据库的索引类型(HNSW、IVF)如何选择?
  • Windows系统优化方案:如何通过AtlasOS实现性能提升与隐私保护
  • leetcode1672---先飞的笨鸟
  • 格行代理_随身WiFi招商_2026低门槛副业创业项目 - 格行官方招商总部
  • 告别手动回复!用Python+uiautomation给微信PC版做个关键词自动回复机器人
  • DDrawCompat:现代Windows系统下的经典图形API兼容解决方案
  • 智能车竞赛双车跟随组规则优化:摄像头高度与车模配置的协同设计
  • OFA-VE模型性能详解:OFA-Large在SNLI-VE测试集SOTA指标复现与解读
  • 2026年河南青少年心理咨询公司推荐:厌学心理咨询/抑郁心理咨询/叛逆心理咨询机构 - 品牌推荐官
  • 新手零基础入门:跟着快马生成的互动教程完成jdk17下载安装与第一个程序
  • 游戏辅助软件功能扩展技术解析与实践指南
  • 数据恢复与Python环境重建指南
  • 秦皇岛北戴河广大汽车修理厂丨官方电话及服务详解,14年专业汽车维修 - 宁夏壹山网络
  • OptiScaler终极指南:让所有显卡都能体验AI超分辨率的完整解决方案
  • 告别繁琐的pip安装,用快马平台快速搭建python数据分析原型
  • EasyAnimateV5图生视频避坑指南:OOM解决方案、采样步数与分辨率平衡策略
  • 【2026年6月最新】英语四级历年真题及答案解析PDF电子版(2015-2025年12月)
  • 2026年电力预制舱厂家推荐:110kv预制舱/一二次预制舱/光伏预制舱/升压站预制舱专业供应商精选 - 品牌推荐官
  • npm下载卡住 / npm install太慢?别再瞎试了,这个方法我用一次就不想换回去
  • 效率提升利器:用快马生成智能脚本,一键统一团队node.js开发环境
  • 告别格式混乱:用pdf2docx实现PDF到Word的无损转换
  • 从乡村振兴到碳中和:用NVivo分析不同领域政策文本的实战思路与模板分享
  • 比迪丽LoRA模型Transformer原理浅析:理解AI绘画的底层逻辑
  • 新手零压力:跟着快马生成的图文指南,轻松完成wsl2安装
  • 让旧Mac焕发新生:OpenCore Legacy Patcher免费升级终极指南
  • 颠覆认知:重新定义macOS鼠标体验的开源黑科技