はじめに オライリーの「入門自然言語処理」に、焼きなまし法を使った教師なし単語分割について書かれていたので、これを試す。 アプローチ 「出現単語数」+「のべ出現単語数」+「入力文の文字数(固定)」=目的関数を最小化 単語の区切り位置を温度によって変化させる(近傍探索) 温度をどんどん冷やしていき、それに伴い、変化させる区切り位置の数を減らす コード #include <iostream> #include <vector> #include <set> #include <cmath> //xorshift // 注意: longではなくint(32bit)にすべき unsigned long xor128(){ static unsigned long x=123456789, y=362436069, z=521288629, w=88675123; unsigned long t;