From: rux.bbs@bbs.cis.nctu.edu.tw (亦驢)
Newsgroups: tw.bbs.comp.chinese
Subject: 一個隨手可得的詞庫
Date: 23 Feb 1995 14:40:14 GMT
成大計中站轉信出了問題,重新貼一次:
詞庫的重要性,應該是很清楚的。
簡單的像是「修正 Big5 文件的程式」,
困難點的像是:「自動選字輸入法」、「校對」、「語音辨識」等
都有機會使用到詞庫。
但在網路上似乎沒有可資利用的詞庫,
像我及 Purkinje 這種局外人,想寫個小程式玩玩,
找不到人提供詞庫就只能走旁門... :P
於是,昨天一不小心,發現一個「垂手可得」的詞庫:
倚天的普及率,應該是沒話說。他有一種輸入法叫「聯想字」。
所謂聯想字,就是預測你下一個可能的輸入。
這種輸入法,對於想忙打的人來說,幫助不大,
但對於對鍵盤不熟、習慣選字的人來說,卻大有助益。
聯想字的原理很簡單,建好一套詞庫。
你打了一個字,他就顯示詞庫中以此字為首的詞的下一字,
運氣好的話,一字只需一鍵就可打出一段。
感謝倚天公司,這詞庫很容易就可使用。方法如下:
(LCCVT 是一支轉換程式,我附在後面)
TABCVT LCPHRASE.TTT ET1
TABCVT LCWORD.TTT ET2
LCCVT ET1 > CORPUS.ET
LCCVT ET2 >> CORPUS.ET
如此,就可得到一個兩萬七千詞的詞庫了 :)
雖然沒有詞頻等相關資料,不過也差強人意了。
希望倚天、自然或漢音能將詞庫格式公開,那就太好了 :)
以下是 LCCVT.C:
#include <stdio.h>
#include <string.h>
int main(int argc, char **args)
{
char *c, buf[256];
FILE *fp;
int mode, i;
if (argc < 2) {
printf("USAGE: LCCVT <et_lc_file>\n");
return -1;
}
fp = fopen(args[1], "rt");
if (fp == NULL) {
printf("Cannot open %s\n", args[1]);
return -1;
}
fgets(buf, sizeof(buf)-1, fp);
mode = *(buf+8) - '0';
if (mode) {
while (fgets(buf, sizeof(buf)-1, fp)) {
buf[strlen(buf)-1] = ' ';
*(buf+2) = '\0';
c = buf + (i = 3);
while (*c) {
if (*c == ' ') {
*c = '\0';
printf("%s%s\n", buf, buf + i);
i = c - buf + 1;
}
c++;
}
}
} else {
while (fgets(buf, sizeof(buf)-1, fp)) {
*(buf+2) = '\0';
c = buf + 3;
while (*c != '\n') {
printf("%s%c%c\n", buf, *c, *(c+1));
c += 2;
}
}
}
return 0;
}
--
亦驢人驢名亦驢(徵下聯) 成大電研計算機 rux@eembox.ncku.edu.tw