[sphinx]中文语言模型训练

一,不用分词的短词组语言模型训练

参考资源:http://cmusphinx.sourceforge.net/wiki/tutoriallm  sphinx官方教程

1)文本准备

生成文本文件,内含一行一个的单词。头尾有<s> </s>标记,如下所示,其中单词前后都有空格。文件为utf-8格式,文件名为test.txt。

<s> 苏菲 </s>
<s> 百事 </s>
<s> 雀巢 </s>
<s> 宝洁 </s>
<s> 壳牌 </s>
<s> 统一 </s>
<s> 高通 </s>
<s> 科勒 </s>

2)上传此文件到服务器上,生成词频分析文件

text2wfreq < test.txt | wfreq2vocab > test.vocab

中间过程如下:

text2wfreq : Reading text from standard input...
wfreq2vocab : Will generate a vocabulary containing the most
              frequent 20000 words. Reading wfreq stream from stdin...
text2wfreq : Done.
wfreq2vocab : Done.

结果文件为test.vocab,其中格式为:

## Vocab generated by v2 of the CMU-Cambridge Statistcal
## Language Modeling toolkit.
##
## Includes 178 words ##
</s>
<s>
一号店
上好佳
上海滩
丝塔芙
丝芙兰

3)生成arpa文件

text2idngram -vocab test.vocab -idngram test.idngram < test.txt
idngram2lm -vocab_type 0 -idngram test.idngram -vocab test.vocab -arpa test.lm

第一条命令中间过程为

text2idngram
Vocab                  : test.vocab
Output idngram         : test.idngram
N-gram buffer size     : 100
Hash table size        : 2000000
Temp directory         : cmuclmtk-Mtadbf
Max open files         : 20
FOF size               : 10
n                      : 3
Initialising hash table...
Reading vocabulary...
Allocating memory for the n-gram buffer...
Reading text into the n-gram buffer...
20,000 n-grams processed for each ".", 1,000,000 for each line.

Sorting n-grams...
Writing sorted n-grams to temporary file cmuclmtk-Mtadbf/1
Merging 1 temporary files...

2-grams occurring:      N times         > N times       Sug. -spec_num value
      0                                             351             364
      1                             348               3              13
      2                               2               1              11
      3                               0               1              11
      4                               0               1              11
      5                               0               1              11
      6                               0               1              11
      7                               0               1              11
      8                               0               1              11
      9                               0               1              11
     10                               0               1              11

3-grams occurring:      N times         > N times       Sug. -spec_num value
      0                                             525             540
      1                             522               3              13
      2                               3               0              10
      3                               0               0              10
      4                               0               0              10
      5                               0               0              10
      6                               0               0              10
      7                               0               0              10
      8                               0               0              10
      9                               0               0              10
     10                               0               0              10
text2idngram : Done.

结果文件为test.idngram,其中格式为

^@^@^@^A^@^@^@^B^@^@^@^C^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@^D^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@^E^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@^F^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@^G^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@^H^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@  ^@^@^@^A^@^@^@^A^@^@^@^B^@^@^@
@
@

第二条命令,中间过程为产生很多warning,但是最后显示done,这里语言模型应该是有问题了。

Warning : P(2) = 0 (0 / 177)
ncount = 1
Warning : P(2) = 0 (0 / 177)
ncount = 1
Warning : P(2) = 0 (0 / 177)
ncount = 1
Warning : P(2) = 0 (0 / 177)
ncount = 1。。。。。。。

Writing out language model...
ARPA-style 3-gram will be written to test.lm
idngram2lm : Done.

 

结果文件为test.lm,打开查看内容

This is a CLOSED-vocabulary model
  (OOVs eliminated from training data and are forbidden in test data)
Good-Turing discounting was applied.
1-gram frequency of frequency : 174
2-gram frequency of frequency : 348 2 0 0 0 0 0
3-gram frequency of frequency : 522 3 0 0 0 0 0
1-gram discounting ratios : 0.99
2-gram discounting ratios : 0.00
3-gram discounting ratios : 0.00
This file is in the ARPA-standard format introduced by Doug Paul.

此处意思是只有1-gram,缺乏2-gram和3-gram,事实上翻看后面这个lm中的内容, 列出的2-gram对和3-gram,是以行为分界。

二 使用语言模型

使用sphinx官网自带的中文声学模型,和中文词典,以及此处训练得到的语言模型。识别特定的一些字串。此处有160个单词,和这160个单词的发音得到的词典,以及包含这些词的一个庞大丰富的声学模型,所以按照逻辑,识别过程找到对应的每个字后,再依据这个语言模型中不同字的组合形成的词语,能识别出正确的词组。

windows上安装了pocketsphinx,使用如下:

pocketsphinx_continuous.exe -inmic yes -lm test.lm -dict test.dic -hmm zh_broadcastnews_ptm256_8000

此处,-lm引入的模型是直接生成的lm后缀的模型,而武林秘籍中是先把lm模型转为dmp模型,再在此处使用,不知道问题是否在这里。

三 nextplan

1)使用全部词串,词串都经过分词,训练语言模型,然后和固有声学模型一起使用

在线分词工具,先不论性能好坏,如下可直接用:

php分词系统演示: http://www.phpbone.com/phpanalysis/demo.php?ac=done

SCWS中文分词:   http://www.xunsearch.com/scws/demo.php

NLPIR 中科院计算机所NLP: http://ictclas.nlpir.org/nlpir/  (只想说这就是我心目中的NLP有趣的方式)

这个结果还需要做处理,当下不太实用。

2)录制300个句子,训练声学模型,和对应的语言模型一起使用。

时间: 2024-08-10 18:43:46

[sphinx]中文语言模型训练的相关文章

sphinx中文入门指南 (转自sphinx中文站)

Sphinx中文入门指南 wuhuiming<blvming在gmail.com>,转载请注明来源和作者 最后修改:2010年1月23日 1.简介 1.1.Sphinx是什么 1.2.Sphinx的特性 1.3.Sphinx中文分词 2.安装配置实例 2.1 在GNU/Linux/unix系统上安装 2.1.1 sphinx安装 2.1.2.sfc安装(见另文) 2.1.3.coreseek安装(见另文) 2.2 在windows下安装 3. 配置实例 4.应用 4.1 在CLI上测试 4.2

Sphinx中文分词在discuz 中的应用

Sphinx中文分词在discuz 中的应用. Sphinx-for-chinese是一款专注于中文搜索的全文检索软件,在sphinx的基础上添加了中文处理模块并优化了中文搜索效果.相比而言,以某某论坛几千万数据环境来看,比Coreseek封装的sphinx中文分词+mmseg3组合要好一点 1.准备环境 cd /var/tmp/ wget http://www.sphinx-search.com/downloads/sphinx-for-chinese-2.2.1-dev-r4311.tar.

【sphinx】中文声学模型训练

一 .使用CMUSphinx训练声学模型 CMUSphinx工具包中自带好几个高质量的声学模型.美语模型,法语,中文模型.这些模型是经过优化的,为了得到最佳的性能,大多数指令交互系统能直接用这些模型,甚至一些大词汇量的应用也能直接用他们. 除此之外,CMUSphinx提供了功能,能适应现存的模型,为了满足有些需要更高精度的需求.当你需要使用不同的录音环境,(比如近距离,远离麦克分或者通过通话过程中),这些情况下做适应结果都是不错的,或者当需要转换一种口音,比如美语和英语的转换,印度英语的使用等.

(转)Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Centos下Sphinx中文分词编译安装测试---CoreSeek

要支持中文分词,还需要下载Coreseek,可以去官方搜索下载,这里我用的4.1 百度云下载地址:      https://pan.baidu.com/s/1slNIyHf tar -zxvf coreseek-4.1-beta.tar.gz cd coreseek-4.1-beta cd mmseg-3.2.14/ ./bootstrap   //测试安装环境 libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'

Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Tesseract-OCR-v5.0中文识别,训练自定义字库,提高图片的识别效果

1,下载安装Tesseract-OCR 安装,链接地址https://digi.bib.uni-mannheim.de/tesseract/ ? 2,安装成功 tesseract -v 注意:安装后,要添加系统环境变量 ? 3,cmd指定目录到 cd C:\Work\BlogsTest\TestPic,要识别图片的文件夹 识别:tesseract test.png result -l chi_sim ? 识别成功的效果,result.txt文件会自动生成 ? 要注意:Tesseract-OCR的

语言模型训练网站

rnnlm: 1.CSC321 神经网络语言模型 RNN-LSTM  http://www.cnblogs.com/rocketfan/p/5052245.html

Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词

什么是Sphinx Sphinx 是一个全文检索引擎,一般而言,Sphinx是一个独立的搜索引擎,意图为其它应用提供快速.低空间占用.高结果相关度的全文搜索功能.Sphinx能够很easy的与SQL数据库和脚本语言集成.当前系统内置MySQL和PostgreSQL 数据库数据源的支持.也支持从标准输入读取特定格式的XML数据.通过改动源码.用户能够自行添加新的数据源(比如:其它类型的DBMS的原生支持). Sphinx的特性  快速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);