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