libgooglepinyin-0.1.2/data里:rawdict_utf16_65105_freq.txt和rawdict_utf16_65105_freq.be.txt,be是big endian的缩写。

  欧美国家 141.29744947 0 ou mei guo jia

ou mei guo jia 每个字符都占两个字节。UTF-8转UTF-16不用查表。


sunpiyin的源码里有数据lm_sc.3gm.arpa, Language Model Simplified Chinese 3 Gram ARPA

  䁖  0.00000000869200001  1.00000000000000000

  联合国教科文组织 颁发 的  0.85944473743438721

这个文件是UTF-8编码的,虽然汉字要占3个字节,字母/数字只占1个字节。

1. 00000 00000 00000 00,这是什么精度啊?

  • ‌float占用4字节,提供约6-7位十进制有效数字‌
  • ‌double占用8字节,提供约15-16位十进制有效数字‌
  • ‌long double,精度至少与double相同,80位或128位,我机器上16个字节;写个华容道还担心memset(a, 0, 20)慢呢。

小数点后17个0,比double多且仅多一位?1算不算?

还有,字段之间用两个而不是一个空格分隔,程序里:

  char* delim = strstr(buf, "  ");

一个空格就说:

  Unknown format in: .

  cerr << lineno << " Unknown format in: " << buf << "." << endl;  // 我加的行号

Sunpinyin是Sun公司开发的,文件开头先来34行版权大帽子。作者里一位孙先生/女士都没有。

词的tri-gram,我认为不如字的实用,比如:

  国家质量监督检验检疫总局 颁发  0.06332822144031525  1.00000000000000000

我得先输入 国家质量监督检验检疫总局,再输入ban,这条概率才有用吧?(这条是bi-gram)。

局-颁,XX局 ban,都能起作用啊。

dict.utf8-20131214.tar.bz2 解压后1.8M, 84,069行(有字有词,词57,397个)

lm_sc.3gm.arpa-20140820.tar.bz2 解压后173M, 3,571,764行
  \0-gram\1
  \1-gram\71759
  \2-gram\2500000
  \3-gram\1000000 # 数字为个数

几天前让sunpinyin把谷歌的系统词库当用户词库用,今天折腾sunpyin搞了个3-gram\1版,数据文件减少8M,然后再搞,slmthread就过不去了。

把sunpinyin的系统词库加入谷歌的系统词库?“欧美国家 141.29744947 0 ou mei guo jia”,那个0不能乱填。

链接1〕〔链接2


Advanced Research Projects Agency (ARPA)是美国国防部下属机构,成立于1958年,是互联网前身ARPANET的发起者。

那么多字符可用,它非要用\

posted on 2025-10-27 16:01  华容道专家  阅读(5)  评论(0)    收藏  举报