01/06

(1:04) 昨日の日記、テーマを間違えていた。

月曜日は「感謝する」だった。

代わりに今日やろう。

 

先週一週間にあったことの中で感謝するようなこと。

うーん。

 

(あまりイベントフルな日常を送っていないので出来事自体が少ない)

 

じゃあ、今回はネット関連ということで。

 

1. 藤元杏についての(ネガティブ気味な)感想に答えてくれた吉野さんに感謝。

連続ツイートで詳しく書いてくれた。

ところで、ぼくは(小説家というものに対する脳内イメージと比べて)「世知辛い」と書いたけれど、それなりの収入は入っているそうだ。

めでたい。

 

2. アバンティブックセンター京都店について教えてくれたあさおきさんに感謝。

存在自体を知らなかったので。

京都駅八条口からのアクセスがいい。

カードを作ったら500円の割引券(3月末まで)をもらえたから、次に京都に行くときにはまた寄ろう。

 

3. SJLLのナチュラル575杯に入選させてくれた nanaya_sac さんに感謝。

これまで SJLL は興味はありつつ買ったことがなかったので、この機会に買うことに。

(ちなみに、ぼくのツイートを見ている人はよく知っていると思うが、ナチュラル575というのは他人の何気ないツイートに出てくる575調のこと)

(「東証の近くにあった天ぷら屋」など)

 

今日は、昨日考えた通り、高次 CRF を Semi-Markov CRF にするという方法について考えた。

しかし、どうもうまくいかない。

Semi-CRF 自体がモデルとしてきれいじゃない気がする。

(感覚的だけど)

いったんこのルートは放棄。

 

で、MeCab 方式について考えてみたけれど、MeCab のやつは考えれば考えるほど普通の CRF から遠い。

確かに素性の重みの計算は CRF 的にやっているけれど、根本的に「観測とラベルが一体化している(辞書のエントリという形で)」という意味で全然 CRF 的ではない。

(悪いという意味ではないけれど)

(昨日もちょっと書いたけれど)CRF なら、観測についてはどこの情報でも使えるはずのところが、MeCab では bigram のノードの分しか使えない。

(もっとも、自分の位置から離れた情報というのは普通あまり役に立たないので実用的にはそれでいいとも言えるが、とにかく普通のCRFとは根本的に違う)

(よく Semi-Markov CRF だと言われるけれど、それは完全な誤解だ)

 

それに、MeCab では単語の情報が最終的に「右文脈」「左文脈」「Unigram 内部状態」という 3 つの ID にまとめられてしまう。

確かにこうすると処理速度は速くなるだろうけれど、素性ごとの重みがなくなってしまっているので、未知語のノードに対して素性で重みづけをすることができないんじゃないだろうか。

(実際は、「右文脈」などに素性の重みをまとめていても、元の素性ごとの重みを覚えていれば、それを未知語ノードに適用することはできるはず)

(しかし、未知語ノードをやたらと作ると際限がないし、だいぶ重くなるだろうからやってないんじゃないだろうか)

 

MeCab の CRF は、いわば「bigram CRF」と言えるぐらい、言語モデル的だ。

それを拡張するとすると、「N-gram CRF」的なものを考えざるを得ない。

もっとも、bigram より高い次数にどれだけの効果があるかというのはわからないけれど。

 

MeCab の未知語処理の弱さは、だいぶ重くなることを覚悟すれば、未知語ノードを作りまくって素性をつけて重みを計算したらマシになるんじゃないだろうか?

でも、そうするとだいぶ重くなりそうだ。

N-gram CRF」的なものにしないでそこだけやるということも考えられるな。

 

N-gram CRF(仮称)についてはどうするか、もうちょっと考えてみよう。