Add KANAKANCOST
This commit is contained in:
parent
530e94396f
commit
a6a7858eaf
20 changed files with 58916 additions and 59081 deletions
|
|
@ -50,6 +50,7 @@ int codesize(u_char code) {
|
|||
case LEADINGHANKAKU:
|
||||
case OFFSETASSYUKU:
|
||||
case AIATTRIBUTE:
|
||||
case KANAKANCOST:
|
||||
return 2;
|
||||
default:
|
||||
return 2;
|
||||
|
|
|
|||
|
|
@ -43,27 +43,3 @@ VFunc cvtnum_func[] = {
|
|||
(VFunc)num_type04, (VFunc)num_type05, (VFunc)num_type06, (VFunc)num_type07,
|
||||
(VFunc)num_type08, (VFunc)num_type09, (VFunc)num_type10, (VFunc)num_type11,
|
||||
(VFunc)num_type12, (VFunc)num_type13, (VFunc)num_type14};
|
||||
|
||||
UCPFunc getkan_func[] = {
|
||||
(UCPFunc)getkan_norm, (UCPFunc)getkan_norm, (UCPFunc)getkan_hira, (UCPFunc)getkan_kata,
|
||||
(UCPFunc)getkan_knj, (UCPFunc)getkan_ofs, (UCPFunc)getkan_norm, (UCPFunc)getkan_none,
|
||||
(UCPFunc)getkan_norm, (UCPFunc)getkan_norm, (UCPFunc)getkan_hira, (UCPFunc)getkan_kata,
|
||||
(UCPFunc)getkan_knj, (UCPFunc)getkan_ofs, (UCPFunc)getkan_norm, (UCPFunc)getkan_none};
|
||||
|
||||
IFunc setjrec_func[] = {
|
||||
(IFunc)setj_norm2, (IFunc)setj_norm2, (IFunc)setj_norm1, (IFunc)setj_norm1,
|
||||
(IFunc)setj_knj, (IFunc)setj_ofs, (IFunc)setj_norm2, (IFunc)setj_atrb,
|
||||
(IFunc)setj_norm2, (IFunc)setj_norm2, (IFunc)setj_norm1, (IFunc)setj_norm1,
|
||||
(IFunc)setj_knj, (IFunc)setj_ofs, (IFunc)setj_norm2, (IFunc)setj_atrb};
|
||||
|
||||
IFunc hiraknj_func[] = {
|
||||
(IFunc)hiraknj_hira, (IFunc)hiraknj_norm, (IFunc)hiraknj_hask, (IFunc)hiraknj_kask,
|
||||
(IFunc)hiraknj_knj, (IFunc)hiraknj_ofs, (IFunc)hiraknj_norm, (IFunc)hiraknj_atrb,
|
||||
(IFunc)hiraknj_hira, (IFunc)hiraknj_norm, (IFunc)hiraknj_hask, (IFunc)hiraknj_kask,
|
||||
(IFunc)hiraknj_knj, (IFunc)hiraknj_ofs, (IFunc)hiraknj_norm, (IFunc)hiraknj_atrb};
|
||||
|
||||
UCPFunc makekan_func[] = {
|
||||
(UCPFunc)makekan_norm, (UCPFunc)makekan_norm, (UCPFunc)makekan_1byte, (UCPFunc)makekan_1byte,
|
||||
(UCPFunc)makekan_knj, (UCPFunc)makekan_ofs, (UCPFunc)makekan_norm, (UCPFunc)makekan_none,
|
||||
(UCPFunc)makekan_norm, (UCPFunc)makekan_norm, (UCPFunc)makekan_1byte, (UCPFunc)makekan_1byte,
|
||||
(UCPFunc)makekan_knj, (UCPFunc)makekan_ofs, (UCPFunc)makekan_norm, (UCPFunc)makekan_none};
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ code2kanji(SJ4_CONTEXT u_char* s, u_char* d, u_char* ym, int yl, int flg) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
case KANAKANCOST:
|
||||
d = getkan_none(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
|
|
@ -181,6 +182,7 @@ code2kanji(SJ4_CONTEXT u_char* s, u_char* d, u_char* ym, int yl, int flg) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
case KANAKANCOST:
|
||||
d = getkan_none(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -60,6 +60,16 @@ set2nd(SJ4_CONTEXT CLREC* clrec) {
|
|||
return rec2 ? (clrec->cllen + rec2->cllen) : (clrec->cllen);
|
||||
}
|
||||
|
||||
static int cost_penalty(CLREC* clrec) {
|
||||
int c = clrec->jnode->cost;
|
||||
|
||||
if(c < 0xfff / 5 * 1) return 8;
|
||||
if(c < 0xfff / 5 * 2) return 4;
|
||||
if(c < 0xfff / 5 * 3) return 2;
|
||||
if(c < 0xfff / 5 * 4) return 1;
|
||||
return 0;
|
||||
};
|
||||
|
||||
void mk2claus(SJ4_CONTEXT2) {
|
||||
u_char* keepptr;
|
||||
int keeplen;
|
||||
|
|
@ -117,7 +127,7 @@ void mk2claus(SJ4_CONTEXT2) {
|
|||
|
||||
if(selcl->cl2len > clrec->cl2len) continue;
|
||||
|
||||
prty = priority(SJ4_CONTEXT_PASS clrec) - prty2;
|
||||
prty = priority(SJ4_CONTEXT_PASS clrec) - prty2 + cost_penalty(clrec);
|
||||
|
||||
prty2++;
|
||||
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ makekan(SJ4_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
case KANAKANCOST:
|
||||
d = makekan_none(SJ4_CONTEXT_PASS s, d, flg);
|
||||
break;
|
||||
|
||||
|
|
@ -223,6 +224,7 @@ makekan(SJ4_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
case KANAKANCOST:
|
||||
d = makekan_none(SJ4_CONTEXT_PASS s, d, FALSE);
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -79,6 +79,10 @@ int setj_ofs(SJ4_CONTEXT u_char* p) {
|
|||
contf = FALSE;
|
||||
break;
|
||||
|
||||
case KANAKANCOST:
|
||||
p += 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
p += setj_norm2(SJ4_CONTEXT_PASS p);
|
||||
}
|
||||
|
|
@ -123,6 +127,10 @@ int setj_knj(SJ4_CONTEXT u_char* p) {
|
|||
contf = FALSE;
|
||||
break;
|
||||
|
||||
case KANAKANCOST:
|
||||
p += 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
p += setj_norm2(SJ4_CONTEXT_PASS p);
|
||||
}
|
||||
|
|
@ -171,6 +179,7 @@ void setjrec(SJ4_CONTEXT u_char* tagp, int mode) {
|
|||
int plen;
|
||||
int nlen;
|
||||
int len;
|
||||
int cost = 0;
|
||||
|
||||
plen = getplen(tagp);
|
||||
nlen = getnlen(tagp);
|
||||
|
|
@ -214,6 +223,11 @@ void setjrec(SJ4_CONTEXT u_char* tagp, int mode) {
|
|||
tmp++;
|
||||
break;
|
||||
|
||||
case KANAKANCOST:
|
||||
cost = ((*tmp & 0xf) << 8) | *(tmp + 1);
|
||||
tmp += 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
tmp += setj_norm2(SJ4_CONTEXT_PASS tmp);
|
||||
}
|
||||
|
|
@ -232,6 +246,7 @@ void setjrec(SJ4_CONTEXT u_char* tagp, int mode) {
|
|||
rec->dicid = curdict->dicid;
|
||||
rec->hinsi = gram;
|
||||
rec->sttofs = headcode;
|
||||
rec->cost = cost;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -282,6 +297,10 @@ void setnumrec(SJ4_CONTEXT u_char* tagp, JREC* rec, TypeGram gram) {
|
|||
tmp++;
|
||||
break;
|
||||
|
||||
case KANAKANCOST:
|
||||
tmp += 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
tmp += setj_norm2(SJ4_CONTEXT_PASS tmp);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -186,6 +186,11 @@ hiraknj(SJ4_CONTEXT u_char* p) {
|
|||
result = hiraknj_knj(SJ4_CONTEXT_PASS p, &i);
|
||||
break;
|
||||
|
||||
case KANAKANCOST:
|
||||
result = 0;
|
||||
i = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
result = hiraknj_hira(SJ4_CONTEXT_PASS p, &i);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue