python语言特点多模型_GitHub - zkyzq/py-kenlm-model: python | 高效使用统计语言模型kenlm:新词发现、分词、智能纠错等...
py-kenlm-model
python | 高效使用统计语言模型kenlm:新词发现、分词、智能纠错等
之前看到苏神【重新写了之前的新词发现算法:更快更好的新词发现】中提到了kenlm,之前也自己玩过,没在意,现在遇到一些大规模的文本问题,模块确实好用,前几天还遇到几个差点“弃疗”的坑,解决了之后,就想,不把kenlm搞明白,对不起我浪费的两天。。
额外需要加载的库:
kenlm
pypinyin
pycorrector
笔者的代码可见github,只是粗略整理,欢迎大家一起改:
mattzheng/py-kenlm-model
相关新词发现,fork了苏神的,进行了微调:
博客链接:
1 kenlm安装
在这里面编译:kpu/kenlm,下载库之后编译:
mkdir -p build
cd build
cmake ..
make -j 4
一般编译完,很多有用的文件都存在build/bin之中,这个后面会用到:
python库的安装方式:
pip install https://github.com/kpu/kenlm/archive/master.zip
简单使用:
import kenlm
model = kenlm.Model('lm/test.arpa')
print(model.score('this is a sentence .', bos = True, eos = True))
坑点来了,笔者之前装在docker之中的,之前一不小心重启docker,kenlm就不灵了。。
当时并不知道该如何重新编译,就重新:cmake .. + make -j 4,但是这样出来,运行会报很多依赖没装:
libboost_program_options.so.1.54.0: cannot open shared object file: No such file or directory
笔者还假了嘛嘎的去ubuntu上拉下来装了,又报其他依赖错。。
(此处省略N多次,无效尝试。。。)
如果出现:
-- Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR)
-- Could NOT find LibLZMA (missing: LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)
需安装:
sudo apt install libbz2-dev
sudo apt install liblzma-dev
之后实验发现,把build文件夹删了,重新来一遍cmake .. + make -j 4即可。
2 kenlm统计语言模型使用
2.1 kenlm的训练 lmplz
2.1.1 两种训练方式
训练是根据build/bin/lmplz来进行,一般来说有两种方式:
(1)管道的方式传递
数据print的方式,苏神之前的博客【【中文分词系列】 5. 基于语言模型的无监督分词】中有提到:
python p.py|./kenlm/bin/lmplz -o 4 > weixin.arpa
p.py为:
import pymongo
db = pymongo.MongoClient().weixin.text_articles
for text in db.find(no_cursor_timeout=True).limit(500000):
print ' '.join(text['text']).encode('utf-8')
(2)预先生成语料文本
直接命令行,数据保存
bin/lmplz -o 3 --verbose_header --text ../text-18-03/text_18-03-AU.txt --arpa MyModel/log.arpa
其中参数的大致意义:
-o n:最高采用n-gram语法
-verbose_header:在生成的文件头位置加上统计信息
--text text_file:指定存放预料的txt文件
--arpa:指定输出的arpa文件
-S [ --memory ] arg (=80%) Sorting memory内存预占用量
--skip_symbols : Treat , , and as whitespace instead of throwing an exception
预先语料可以不加开头、结尾符号,其中, 需要特别介绍三个特殊字符。
、和
和结对使用,模型在计算概率时对每句话都进行了处理,将该对标记加在一句话的起始和结尾。
这样就把开头和结尾的位置信息也考虑进来。
如“我 喜欢 吃 苹果” --> " 我 喜欢 吃 苹果 "
表示unknown的词语,对于oov的单词可以用它的值进行替换。
可参考:
不带开头结尾:
W h o o 后 拱 辰 享 水 水 妍 护 肤 套 装 整 套 质 地 都 比 较 清 爽
滋 润
侧 重 保 湿
适 合 各 种 肤 质
调 节 肌 肤 水 平 衡
它 还 具 有 修 复 功 效
提 亮 肤 色 我 是 油 性 肤 质 用 起 来 也 一 点 也 不 觉 得 油 腻
味 道 淡 淡 的 还 很 好 闻
也 很 好 吸 收
质 地 清 爽
带开头结尾的:
3 乙 方 应 依 据 有 关 法 律 规 定
对 甲 方 为 订 立 和 履 行 本 合 同 向 乙 方 提 供 的 有 关 非 公 开 信 息 保 密
但 下 列 情 形 除 外
1 贷 款 人 有 权 依 据 有 关 法 律 法 规 或 其 他 规 范 性 文 件 的 规 定 或 金 融 监 管 机 构 的 要 求
2.1.2 生成文件arpa的解释
python语言特点多模型_GitHub - zkyzq/py-kenlm-model: python | 高效使用统计语言模型kenlm:新词发现、分词、智能纠错等...相关推荐
- python函数封装计算n_python | 高效使用统计语言模型kenlm:新词发现、分词、智能纠错等...
py-kenlm-model python | 高效使用统计语言模型kenlm:新词发现.分词.智能纠错等 之前看到苏神[重新写了之前的新词发现算法:更快更好的新词发现]中提到了kenlm,之前也自己 ...
- python调用nastran_基于Python语言的NASTRAN模型向Abaqus模型转换程序
基于 Python 语言的 NASTRAN 模型向 Abaqus 模型转 换程序 张 涛 李三平 杜双龙 [期刊名称] 中国科技信息 [年 ( 卷 ), 期] 2016(000)008 [总页数] 3 ...
- Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略
Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略 目录 双下划线介绍 1.关于双下划线的函数或方法或属性 双下划线介绍 1.关于双下划线的函数或方法或属性 __name_ ...
- python语言的开发者_写给.NET开发者的Python教程(一):引言
距离上一篇博文已过去8个月了,这段时间发生了很多事情导致没能持续更新博客.这段时间除了工作繁忙,业余时间都投入到AI技术的学习中,后面一段时间将会给大家分享我作为一个.NET开发人员在深度学习领域学习 ...
- 以下可以采用python语言保留字的是-以下选项中,不是Python语言保留字的是_学小易找答案...
[单选题]以下选项中,不是 Python 语言保留字的是 [连线题]将动机理论及其解释说明连线: [单选题]以下选项中,不是Python语言合法命名的是 [单选题]在Python函数中,用于获取用户输 ...
- Python语言学习之常见语句命令那些事:python和常见语句命令(条件语句、pass语句)使用方法之详细攻略
Python语言学习之常见语句命令那些事:python和常见语句命令(条件语句.pass语句)使用方法之详细攻略 目录 Python常见语句命令 1.python的条件语句 2.Python之pass ...
- python语言编程入门第一讲-第1讲:Python基本知识快速入门
上一讲介绍了Python编程的概念,我们知道了编程的目的和意义, 同时,还简要的展示了Python最新版软件的安装和验证, 没看到的可以点下方的链接直达: 人类在进行重复性的工作的时候往往会感到枯燥乏 ...
- python语言程序设计基础上海交通大学_北京交通大学:Python语言程序设计
『课程目录』:$ y0 q8 G3 Q" Z% p6 K│ ├─第一章概述, c) e/ m) X# s- B, r│ │ 1.1.1第1课时计算机起源 – 计算机发展史中三位里程碑人物,快 ...
- python语言程序设计基础答案第四章_《Python语言程序设计基础》第四章笔记
4.1 程序的分支结构 4.1.1 单分支结构 if : if True: print("条件正确") 4.1.2 二分支结构 if : else : if True: print ...
- python语言三大基本控制结构_【笔记】《python语言程序设计》——程序的控制结构...
一.前言 学习就是一个不断的自下而上,自上而下的过程. 前段时间,学着用python实现网站的数据爬取,隐约get到python的一些语法和用法,感觉就是语法不难,关键在于解决问题的思维. 这是需求驱 ...
最新文章
- Linux命令详解:[7]获得命令帮助
- idea2019中文版
- python html模块调用_Python html 模块简介
- mongo oplog 整理
- Elasticsearch Mapping 详解
- 小白开学Asp.Net Core 《十》
- rabbitmq基于http的认证和授权
- linus系统下载_系统管理程序卷土重来,Linus拒绝并阅读电子邮件,以及更多行业趋势
- 新华网评:企业的信息安全关把好了吗?
- 消耗报表数据库呈现了流动变乱的回滚段破损(三)
- 此windows副本不是正版
- 音乐转换成16进制写进单片机的方法(音符频率和音符的播放长度时间计算)
- 全球各大网站的服务器使用什么操作系统和WEB服务器(转)
- php设置pdf下载加密文件,pdf文件加密方法 PDF文件怎样加密 如何给PDF文件添加打开口令...
- 计算机网络汇聚层,31. 接入层 汇聚层 核心层 三层典型网络架构
- win10系统 oracle11g的安装流程
- NAT和路由器 基本概念
- GPS定位,经纬度附近地点查询–C 实现方法
- 并查集——银河英雄传说()
- VHDL 语言学习笔记(1)
热门文章
- 饿了吗分页插件el-pagination显示英文问题解决
- (更新时间)2021年3月28日 python基础知识(装饰器)
- 小红书KOL品牌排行榜!小红书直播数据
- 北邮计算机发展,准备报考北京邮电大学的信息科学与技术专业,发展前景如何?...
- Android 颜色,6位和8位数颜色的区别和应用
- 华为在海外市场受损,三星则因此而取得利润与份额齐升
- 三维气象要素场--Unity3d篇
- 从 Hadoop 到 Snowflake,2023年数据平台路在何方?
- 怎么分辨CN2 GIA,CN2 GT,CTG,163直连,国际线路?
- 和计算机交朋友 ppt,第2课 与计算机交朋友