掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 82|回复: 3

[词典讨论] 浅谈辞书编纂需要什么样的中文语料库

[复制链接]

该用户从未签到

发表于 前天 20:54 | 显示全部楼层 |阅读模式
本帖最后由 klwo2 于 2026-10-15 21:19 编辑 % z2 H3 m$ n' g  n4 g

  g) |) T3 g6 T9 Q5 k* l大人物已经谈过这个问题:《国家社会科学基金重大项目“辞书编纂用大型多功能语料库建设与研究”开题》http://ling.cass.cn/xshd/huiyi/202406/t20240625_5761139.html3 w5 P/ X; f1 A/ U9 @6 `
9 m4 |. R- J1 J
所以我这里是「浅谈」,说说我的体会。+ R' l% {( N. O5 a# r

( S  q  [# h9 M( ^  E而且只谈中文语料库,外语的、双语的不谈。
& U5 j5 H" z3 x. `7 P- j/ M. s: F- y& ]5 \1 |+ z
十一的时候,我忽然想到,BCC语料库开放了自己的「构建个人 BCC 语料库」功能(https://bcc.blcu.edu.cn/build-corpus.html),所以利用Codex写了一个自用的语料库软件,踩了一些坑。0 x% ?6 i3 C; A: J
3 E" g1 N( ?3 S2 Q2 Z
目前软件已经定型,不过我不是写代码的料,还有些bug留待慢慢发现、修正,就不拿出来了。只说体会。! d* E2 @# C/ C4 ^

6 m2 }0 r! p2 I  c. d+ T————————————————————————————————————————————————! I$ ^( k1 [3 m0 P9 {' e+ z
(1)规模问题  F) E, l7 W1 {# w
- ^" M# `: Y  D) m
为什么想着要构建自己的语料库呢?因为常见的BCC、CCL两个语料库都不够大,有些语言现象明明是有的,Google搜得到,俩语料库却没有,影响语言分析,自然也影响辞书编纂了。, z+ W; g9 J  c+ Q
  K% z# o, [2 L7 b- Z
我万万没想到,这软件成型以后,我随手导入了两份文本,规模就直逼BCC、CCL(现代汉语)两个语料库了。我超雷!
3 D, D& h) \, [' h  x2 C( q! R& d' ^' N* {, `2 |
9 n0 K) t5 H" V3 E

# `( N5 Q( h  y4 [7 c4 q4 |5 K对比:
$ Q  o- l! {- y% K6 E: M
* O( @5 A+ P7 `% k
BCC 汉语在线语料库总字数约 62 亿字,覆盖当代社会语言生活的多个领域,包括: 新闻、文学、口语、近代汉语、古汉语以及多领域等。
( a3 ~  l' j" m8 P, \  |5 x% }2 M; ~9 C% j6 i- ]' D
其中,多领域为平衡语料库,从新闻、文学、口语三类现代汉语语料中等规模抽样,并补充同等规模的科技类文本而成。
. ?3 }9 v) J, r9 a
$ B1 B& K7 U8 k. S1 y
CCL语料库的版本历史
% m8 B# S5 O1 L9 C4 D) l; c8 U9 z
/ ~- i: m6 Z' \/ G2026版:现代汉语:12,907,373,697 (129.0 亿字符)

% M+ Y. O* E& q' k. v# d' I
' w9 n) G2 ^0 b3 _' M+ B- _8 {5 wBCC原先是150亿来着,2.0版瘦身,现在只有62亿字了。CCL原先很小,吃了一个WuDaoCorpora语料(都是互联网文本)以后变成现在这样了。; |0 e, R. h3 o4 p4 Z( @

  z% {* B/ ]' ]6 ^( \- s1 U刚开始我还以为程序统计错了,反复试验后发现,我的库确实跟他们接近或者比他们大,很多词搜索结果确实比他们多很多——: p0 h! r% \; o6 d* C) d
. ]% d) b1 x. \$ H
  q8 U7 V% B& y/ _8 N  j/ m

1 c7 Q- u3 n( m8 |
7 G1 ]# |/ Y" t5 C. \- y+ P& r" k! T+ `$ [6 {- w" u8 C
而且我的文本不是互联网上随便找的,是权威媒体文本,可靠性强。
% W5 s; D1 v9 ^$ W
" U$ W" N5 u4 {7 o& _" J. s: F/ v
7 W0 F6 {- z5 B- P* r* @, i. u: B( D& Q2 y9 b3 a, r8 \
我没有说他们不好的意思。由于历史原因、版权原因等等,语料库不够大是可以理解的。只是我没料到这么显著。
5 A, h2 ]+ ]3 M2 @
" _9 P5 I- g; D  V5 E* v. j# Q, u/ y我手边还有不少等着导入的文本,最后的规模会有多大,现在还不知道。- ~; S) g2 J  W5 `" I4 s1 H5 L5 p

8 F. I, D9 n6 p! `————————————————————————————————————————————————7 m7 X. |8 H+ |+ q$ Y: w, F
(2)架构问题( `# B; s9 h- ^. r& @
7 H. E: u1 ]4 {- e
我原先想的就是用「构建个人 BCC 语料库」功能,用BCC的LangSC 工具包,做一个外壳出来。
2 ^. E; z7 n+ S/ n' X; g6 [6 }0 Z- ?" R2 h/ I
结果碰到了几个问题:
% F/ `6 y4 t* `8 Q: f$ k2 M
- z6 @. G, J7 @1 |一、LangSC 工具包给文本生成的索引文件太大了,100M的原始文本,生成的索引有1G!
7 V+ c# M* N! N% S1 F7 r  l& F! a- A8 H: T
我推测这是因为LangSC 工具包的功能丰富,不但有分词,还有语法分析,功能太多,所需要的索引自然就多了。
. y/ Z" C6 [& m& P
3 o7 _- `- \4 i% G0 N其实按我的意见,编汉语辞书并不太需要花哨的语法分析功能。因为不准。有个勉强能用的分词、词性标注、搭配分析,已经够了。& ^. P5 X+ l) c* k& g3 E2 R0 U

- b4 M+ X$ r! |+ R2 ]咱就是说,你都受苦刑了,编词典了,花点笨功夫有什么不好?
( o" o" f9 s1 l
( Y( L# |8 @+ t- g' ^要想建立大型中文语料库,按1:10索引,这也太费硬盘了,所以我又引入了一个机制:SQLite FTS+better-trigram 扩展
$ X$ ]( O' G  q+ f: C7 }1 y7 K
" C3 ~& ^5 X! \: I; o  T这样实现的效果接近CCL:不分词,纯粹查询,索引小很多,和原文本大致是1:1的关系,可以接受。4 g; Z. j+ N2 h* t9 e6 X* R% V4 k1 A

5 {: R- H; p: i7 F" U* |2 qBCC检索和FTS检索是并行的两套,大库只开FTS,省空间。
  g* o$ M- y' g- x2 _1 m, e3 p! A  r- P6 n
二、CCL是不分词的,BCC是分词的,哪个好呢?  @5 D8 y- z7 |$ ^7 @7 D( T% X% K
( k+ j0 [- Q( J0 O
其实这两者都有毛病。CCL不分词,所以有些不该属于搜索词的结果也会显示出来。$ @6 t4 v* W& {+ X; r$ b

) j; y$ w" E" o2 S6 |( b0 }- UBCC分词,但有时候碍事。我举个例子:
9 y; V$ J; B/ X. S" e& I2 C' v! K3 J+ {. d
江大桥市长自上任以来,清廉正直,为官六十多年,至今仍然在位,昨天来南京出差,在高铁上依旧看到了一块巨大的广告牌,上面写着,南京市长江大桥欢迎您!可见江大桥市长是一位十分受人欢迎的官员,不然不可能为官六十年还不下马!

$ `0 o, B  D- T$ V, s
+ B6 p! x0 O! Y$ F( SBCC处理后变成:
0 V) U- H7 [) w& T. O3 r
% ?8 h% G' t( o& E! q% k8 F: M
Item:江大桥/n 市长/n 自/d 上任/v 以来/f ,/w 清廉/a 正直/a ,/w 为/p 官/n 六十/m 多/m 年/q ,/w 至今/d 仍然/d 在位/v ,/w 昨天/t 来/v 南京/ns 出差/v ,/w 在/p 高铁/nr 上/v 依旧/z 看到/v 了/u 一/m 块/q 巨大/a 的/u 广告牌/n ,/w 上面/f 写/v 着/u ,/w 南京市长江大桥/n 欢迎/v 您/r !/w 可见江大桥/n 市长/n 是/v 一/m 位/q 十分/m 受/v 人/n 欢迎/v 的/u 官员/n ,/w 不然/c 不/d 可能/v 为/p 官/n 六十/m 年/q 还/d 不/d 下马/v !/w

% @7 U* u5 s2 u! T* m1 H5 X& M& Y& [0 Q; a, F: D( e6 l: F( E
BCC处理以后,「南京市」或者「可见」就再也不可能召回这句话了,因为「南京市长江大桥/n」「可见江大桥/n」被分词分成一个单元了。这就是BCC在线语料库有时候莫名其妙就是搜不到原话的原因。
: \( i3 m  J$ Y2 q$ V3 R# ?/ z" B5 Y- C% a
我的解决思路是,大库只开启FTS 检索,遇到不分词导致的毛病时,再导出给BCC的模块处理。这样就既解决了问题,又不过度占用硬盘空间。
# U5 n8 g$ S! Y% ]1 b/ X
* D& M8 a. T$ e2 m2 s8 N8 @
! `( I* w- F9 c/ @
) G/ h' p. D$ N, _6 _FTS的整体体验和CCL语料库比较近,我选择性开了一些语法,可以支持复杂的检索需求:
4 T9 l/ D, g7 k; b; |+ H& d3 _. }# X; P: i' c/ A8 g' c

* k$ a9 M9 i+ N! c" `8 t
9 Q& ]! F. [7 u+ [5 N三、BCC对Unicode(UTF-8)支持不完整4 H9 N. V2 o* j6 K* c5 ]
3 H0 d& \4 F- T; s8 w' R
BCC在线文档(https://bcc.blcu.edu.cn/build-corpus.htm)是这么说的:
: P, w3 Q3 t2 O* i; z  h, Q5 R( k8 r4 n8 W7 x/ C' M
语料文件建议使用 gb18030 编码。BCC 会自动检测编码,但 gb18030 兼容性最佳。
" p6 I; C$ `3 }5 q+ k

* O/ q6 A( s7 z0 J% }* Z8 v实践发现,并不是设置成gb18030就好了。它的模块不支持PUA区的字。也就是说,有些小说txt里面如果带有Unicode私有区的字,它会报错。$ K& b5 D0 b) I. l* u% o" R/ S/ Z

% c! }+ i# _5 |& s$ W; f2 w2 vBCC新出了一个操作手册(https://bcc.blcu.edu.cn/langsc-guide.html),又这么说:
' \2 O; U3 D; O, `; p  ^" w3 w( ]  q3 n! l' p6 [
查询 / 结果 走 UTF-8(引擎内部 UTF8_2_GBK/GBK2UTF8)。# V6 t. A( A0 \/ Z
语料内容必须 GBK(_utils.process_file 在所有平台显式写 GBK)。
8 n2 s5 C. M# z; C路径建议 ASCII:BCC 引擎自身 fopen 对 CJK 临时路径会失败(即便 Windows),请保持语料/索引目录为 ASCII。

5 d. W# n- r$ e7 `/ o( w2 N  B. W% w% `
说实话,我真的不太明白,这个东西都已经支持时下最最最时髦的智能体了,编码问题折磨人是何必呢。  ~5 U4 L( q, b! `6 W# w

* E# A; \, g$ M- m. E折腾了半天,最后其实还是做的UTF-8,并没有转成GBK,只不过过滤了PUA区。FTS没有这个问题。
6 x  K7 k3 b0 {4 G9 ]
# D5 V% K" z$ h- M————————————————————————————————————————————————( C" K4 v* U$ |* ?+ n% k/ v  w
(3)字形问题& E, |& `3 a& v; u
' e0 B, V: U8 P: u, _
字形问题也折腾过,写写心得。8 Y7 q# m& N+ Z' i5 }& w4 [' o  w

7 {; U4 w2 q" w) E: Z语料里既有简体字,又有繁体字,怎么办?我的做法是:
+ a7 y4 N1 a0 `
5 J  \- ^5 e6 X( {搜索时可以开启「兼容异体字」,用了本坛大好人「飞梧」的异体字表(https://www.pdawiki.com/forum/fo ... hread&tid=49757),这样召回就没有问题了( l- L: c; L5 |

2 G4 ]0 Y6 H2 ]显示时可以自选「保持原文」或者转换繁简。繁简转换用opencc。
3 U  k2 Z1 K# Y) @5 `: a* ~5 F2 U* f  r& }4 h8 f, _

6 M0 o6 t) E- W) l# L
% X! g! ?7 L6 Z9 O1 z6 [3 N# z# H9 z这样既不损害原文,不占用硬盘,又做到了方便快捷,感谢「飞梧」提供灵感和材料!
2 M' Q/ @/ s/ L6 |
8 t3 e( R  I0 o" U- [* Z' t. D————————————————————————————————————————————————, ~6 T( l: h2 r
(4)其他
# t6 W" B# ^. O) G* f
: v( M0 m+ s8 ~* X我个人不觉得把技术细节搞得特别丰富、元信息搞得特别全面,对汉语辞书编纂有什么大用。9 B* z4 n$ A8 q! k
3 e9 k" P5 P9 s3 e2 s
因为现有的汉语语料库的瓶颈是规模太小,语言事实看不全,还远远没到需要复杂的分析手段的阶段。) t& r% Z' C  z' }
; v4 w$ n) H& p
对了,现在神舟大地处处都在接AI、接大模型什么的,不过目前也没在我这个软件的规划里,也许有用,也许没用,谁知道呢。0 b! T$ S2 Z: q& N0 T/ J
; Y& N) w4 G6 X3 F$ c; U
整个做下来的感想就是:原来搭一个语料库系统这么简单,感谢Codex写出了各种各样的bug,害我不断充钱修啊修
" W& I; _9 j8 ^0 p7 d9 Q9 ~; k1 ~% Z. W2 q  j- v/ ?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x
  • TA的每日心情
    怒
    6 小时前
  • 签到天数: 1692 天

    [LV.Master]伴坛终老

    发表于 昨天 04:06 | 显示全部楼层
    LDC语料库更好,更丰富

    该用户从未签到

     楼主| 发表于 昨天 17:31 | 显示全部楼层
    shawky.nasr 发表于 2026-10-16 04:068 Q- I# c% T9 F) r' F# e$ G7 x; A
    LDC语料库更好,更丰富

    ; c; Q- Y, m9 K: I" M9 ^汉语语料不多啊

    该用户从未签到

     楼主| 发表于 昨天 17:31 | 显示全部楼层
    shawky.nasr 发表于 2026-10-16 04:06/ Z. x4 w5 t/ `1 s7 t; ~$ n
    LDC语料库更好,更丰富

    ) Z" f; p* z- W# A汉语语料不多啊
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2026-10-17 08:00 , Processed in 0.034857 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表