規 則 | 変更内容 |
---|---|
(1)VB PDT WDTAG half (2)VB PDT WDNEXTTAG many DT |
文脈規則の先頭に追加。 half_VBとmany_VBという誤タグづけが多い。この誤タグづけが、さらに、to_TOへの誤タグづけを誘発するのを回避する。 |
(3)TO IN NEXTTAG NN (4)TO IN NEXTTAG NNS (5)TO IN NEXTTAG NNP (6)TO IN NEXTTAG DT (7)TO IN NEXTTAG JJ (8)TO IN NEXTTAG VBG (9)TO IN NEXTTAG VBN (10)TO IN NEXTTAG PRP$ (11)TO IN NEXTTAG PRP |
上の規則の次、もとファイル1行目(NN VB PREVTAG TO)の前に追加します。 名詞、決定辞、形容詞(過去分詞)、代名詞、動名詞など、名詞文脈の前に生じているならば、前置詞タグINを付与します。 これを有効にするには、文脈規則の他に、使用する語彙ファイル(たとえば、LEXICON.BROWN.WSJなど)を開いて、文脈規則で使用するタグを登録しておく必要があります。(18824行目のto TO RBを、to TO IN RBと変更します。) |
(12)VBD VBN PREV1OR2WD has (13)VBD VBN PREV1OR2WD had (14)VBD VBN PREV1OR2WD having |
もとファイル13行目(VBD PREV1OR2WD have)の次に追加します。 完了相のhave, has, had, havingに後続する過去・過去分詞同形をVBDからVBNに変更します。 |
(15)VBN VBD PREVWD who (16)VBN VBD PREVWD which |
48行目(VBN VBD PREVWD that)の次に追加します。 主格that, who, whichの直後の過去・過去分詞同形を、VBNからVBDに変更します。 |
(17)VBD VBN PREVWD is (18)VBD VBN PREVWD was (19)VBD VBN PREVWD were |
61行目(VBD VBN PREV1OR2WD are)の次に追加します。 be動詞変化形の直後に生じている過去形・過去分詞同形のタグを、VBDからVBNに変更します。 22行目(VBD VBN PREV1OR2WD be)、129行目(VBD VBN PREV1OR2WD been)と違って、PREV1OR2WDでは誤タグづけが生じるので、PREVWDを使います。 |
(20)VB VBN PREVWD has (21)VB VBN PREVWD had (22)VB VBN PREVWD having |
86行目(VB VBN PREVWD have)の次に追加します。 完了のhave/has/having直後に生じている原形・過去分詞同形をVBNに変更します。have to 構文や使役のhave構文で誤タグ付けが生じないように、PREV1OR2WDではなくて、PREVWDを使用します。 |
(23)DT RB RBIGRAM No , (24)DT UH RBIGRAM No . (25)DT UH RBIGRAM no , |
284行目の次、もとファイルの最後に追加します。 単独のNo/noをRBに変更します。BIGRAMタグを使うときは、bigramsファイルに当該のbigramを予め登録しておく必要があります。 |
(26)RB EX WDNEXTTAG there VBP (27)RB EX WDNEXTTAG there VBZ (28)RB EX WDNEXTTAG there VBD | 284行目の次、もとファイルの最後に追加します。 there + is/are/V のとき、thereに虚辞のEXを付与します。 |
(29)POS PRP LBIGRAM Let 's (30)POS PRP LBIGRAM let 's |
284行目の次、もとファイルの最後に追加します。 Let's/let'sの'sをPOSからPRPに変更します。bigramファイルに登録する必要があります。 |
(31)NN VB PREVWD Please (32)NN VB PREVWD please |
284行目の次、もとファイルの最後に追加します。 動詞・名詞同形ならPlease の後は動詞) |
(33)NN RB WDPREVTAG VB home (34)NN RB WDPREVTAG VBZ home (35)NN RB WDPREVTAG VBD home (36)NN RB WDPREVTAG VBG home | 284行目の次、もとファイルの最後に追加します。 go/come homeなどのhomeにRBタグを付与します。 |
(37)JJ RB RBIGRAM How long (38)JJ RB RBIGRAM how long |
284行目の次、もとファイルの最後に追加します。 How/how longのlongにRBタグを付与します。bigramファイルに予め登録しておく必要があります。 |
(39)NNP VBP RBIGRAM Am I (40)NNP MD RBIGRAM May I |
284行目の次、もとファイルの最後に追加します。 Am I/May I〜?の Am/MayをVBP/MDに変えます。bigramファイルに予め登録しておきます。 |
(41)NNP MD NEXTWD n't (42)NNP RB WDPREVTAG MD n't | 284行目の次、もとファイルの最後に追加します。 Hai n't/Ai n't〜?などで、n't直前の語にMDを、n'tにはRBタグを付与します。 |
(43)NNP CD PREVWD Chapter (44)NNP CD PREVWD CHAPTER (45)NNP CD PREVWD Book (46)NNP CD PREVWD BOOK |
284行目の次、もとファイルの最後に追加します。 Chapter/Bookの後のローマ数字を、NNPからCDに変更します。 |
上で追加した文脈規則がどれほどの効果があるのかを調べてみます。具体的には、誤タグ付けの可能性のある文脈を検索して数え上げ、その数が多いほど効果ありと見なすことにします。(実際の効果は、規則相互の関係や、適用順序などが複雑に絡み合っていているでしょうから、ここでは数値化によって比較ができることを念頭において、単純化して作業しています。)
この検索作業では、自作の検索ソフトKwicker1.0を使いました。検索対象は、GoTaggerのデフォルトの状態で(規則ファイル群に変更を一切加えない状態で)品詞タグ付けを行った89ファイルです。下の表は、誤タグづけが生じる文脈を正規表現で検索し、ヒットした総件数を示しています。この数値を比較することによって、文脈規則変更の効果を大まかに比較することができます。
規 則 | 検索文字列 | ヒット数 |
---|---|---|
(1)VB PDT WDCURRTAG half | half_VB_half | 125 |
(2)VB PDT WDNEXTTAG many DT | many_VB_many an?_DT_an? | 216 |
(3)TO IN NEXTTAG NN | to_TO_to [^ ]+_NN_ | 6,210 |
(4)TO IN NEXTTAG NNS | to_TO_to [^ ]+_NNS_ | 1,406 |
(5)TO IN NEXTTAG NNP | to_TO_to [^ ]+_NNP_ | 10,471 |
(6)TO IN NEXTTAG DT | to_TO_to [^ ]+_DT_ | 35,117 |
(7)TO IN NEXTTAG JJ | to_TO_to [^ ]+_JJ_ | 2,144 |
(8)TO IN NEXTTAG VBG | to_TO_to [^ ]+_VBG_ | 1,165 |
(9)TO IN NEXTTAG VBN | to_TO_to [^ ]+_VBN_ | 73 |
(10)TO IN NEXTTAG PRP$ | to_TO_to [^ ]+_PRP\$_ | 14,932 |
(11)TO IN NEXTTAG PRP | to_TO_to [^ ]+_PRP_ | 21,726 |
(12)VBD VBN PREV1OR2WD has | has_VBZ_have( [^ ]+_[^ ]+_[^ ]+)? [^ ]+_VBD_ | 313 |
(13)VBD VBN PREV1OR2WD had | had_VBD_have( [^ ]+_[^ ]+_[^ ]+)? [^ ]+_VBD_ | 2,332 |
(14)VBD VBN PREV1OR2WD having | having_VBG_have( [^ ]+_[^ ]+_[^ ]+)? [^ ]+_VBD_ | 200 |
(cf)VBD VBN PREV1OR2WD have 86行目のタグづけもれ 文脈規則の最後に追加してもよい | have_VB.?_have( [^ ]+_[^ ]+_[^ ]+)? [^ ]+_VBD_ | 1,044 |
(15)VBN VBD PREVWD who | who_W(P|DT)_who [^ ]+_VBN_ | 48 |
(16)VBN VBD PREVWD which | which_W(P|DT)_which [^ ]+_VBN_ | 141 |
(17)VBD VBN PREVWD is | is_VBZ_be [^ ]+_VBD_ | 152 |
(18)VBD VBN PREVWD was | was_VBD_be [^ ]+_VBD_ | 386 |
(19)VBD VBN PREVWD were | were_VBD_be [^ ]+_VBD_ | 89 |
(20)VB VBN PREVWD has | has_VBZ_have [^ ]+_VB_ | 3 |
(21)VB VBN PREVWD had | had_VBD_have [^ ]+_VB_ | 41 |
(22)VB VBN PREVWD having | having_VBD_have [^ ]+_VB_ | 108 |
(cf)VB VBN PREVWD have | have_VB.?_have [^ ]+_VB_ | 297 |
(23)DT UH RBIGRAM No , | No_DT_no ,_ | 2,799 |
(24)DT UH RBIGRAM No . | No_DT_no \._ | 799 |
(25)DT UH RBIGRAM no , | no_DT_no ,_ | 1,044 |
(26)RB EX WDNEXTTAG there VBP | there_RB_there [^ ]+_VBP_ | 36 |
(27)RB EX WDNEXTTAG there VBZ | there_RB_there [^ ]+_VBZ_ | 102 |
(28)RB EX WDNEXTTAG there VBD | there_RB_there [^ ]+_VBD_ | 406 |
(29)POS PRP LBIGRAM Let 's | Let_VB.?_let 's_POS | 135 |
(30)POS PRP LBIGRAM let 's | let_VB.?_let 's_POS | 94 |
(31)NN VB PREVWD Please | Please_VB_please [^ ]+_NN | 41 |
(32)NN VB PREVWD please | please_VB_please [^ ]+_NN | 51 |
(33)NN RB WDPREVTAG VB home | _VB_[^ ]+ home_NN_ | 554 |
(34)NN RB WDPREVTAG VBZ home | _VBZ_[^ ]+ home_NN_ | 46 |
(35)NN RB WDPREVTAG VBD home | _VBD_[^ ]+ home_NN_ | 576 |
(36)NN RB WDPREVTAG VBG home | _VBG_[^ ]+ home_NN_ | 310 |
(cf)NN RB WDPREVTAG VB east (cf)NN RB WDPREVTAG VBZ east (cf)NN RB WDPREVTAG VBD east (cf)NN RB WDPREVTAG VBG east | [^ ]+_VB[ZDG]?_[^ ]+ east_NN_ | 6 殆ど効果ありません。 |
(37)JJ RB LBIGRAM How long | How_WRB_how long_JJ_ | 152 |
(38)JJ RB LBIGRAM how long | How_WRB_how long_JJ_ | 233 |
(39)NNP VBP NEXTTAG Am PRP | Am_NNP_be I_PRP_i | 179 |
(40)NNP MD NEXTTAG May PRP | May_NNP_may I_PRP_i | 192 |
(41)NNP MD NEXTWD n't | _NNP_[^ ]+ n't_NNP_n't | 78 |
(42)NNP RB WDPREVTAG MD n't | n't_NNP_n't | 78 |
(43)NNP CD PREVWD Chapter | Chapter_NNP_chapter [^ ]+_NNP_ | 174 |
(44)NNP CD PREVWD CHAPTER | CHAPTER_NNP_chapter [^ ]+_NNP_ | 1,075 |
(45)NNP CD PREVWD Book | Book_NNP_book [^ ]+_NNP_ | 11 |
(46)NNP CD PREVWD BOOK | BOOK_NNP_book [^ ]+_NNP_ | 50 |
(47)POS " LBIGRAM . ' | \._\._\. '_POS_' | 23,783 |
(48)POS " LBIGRAM , ' | ,_,_, '_POS_' | 25,315 |
強力で、自在な文脈規則をうまく使うと、大小さまざまなタグ付け(変更)規則を指定することができます。
ただし、いくつかのタグ変更に関しては、文脈規則で扱うのは面倒だったり、ムリがありそうです。たとえば、語の分割の仕方を変えたり、2つの語のタグの両方共を変更する場合です。これらに対処する方法はいくつかありそうですが、以下では、AWKを使って、タグ付けの変更をおこなってみます。
対象 | 変更前 | 変更後 | 適用数 |
---|---|---|---|
'Tis | '_POS_' Tis_NNP_tis | 'T_PRP_it is_VBZ_be | 187 |
'Twas | '_POS_' Twas_NNP_twas | 'T_PRP_it was_VBD_be | 59 |
'twixst | 'twixst_NN_'twixst | 'twixst_IN_'twixst | 2 |
ローマ数字 | [IVX]+_NNP_ | [IVX]+_CD_ | 1,549 |