用語をメモしてみた


形態素解析器

詳細は,Wikipediaを参照して頂くとして,とりあえずこれによって普通の文章を機械で処理しやすいレベルでバラバラにできます.

例えば,文章の中で一番沢山使われている単語は何かを計算するプログラムを考えて下さい.
英文が対象なら,動詞の活用などを考慮しない*1形なら,簡単にできますよね.
つまり,英文は単語と単語がスペースで区切られているので,「 」で文を分割して順番に見て行き出現した単語をカウントしていけばいいわけです.

しかし,日本語の文章ならどうでしょう.一体どこからどこまでが一つの単語かは全然わかりません.
さらに,英語の文章を対象にするにしても,活用が異なっても同じ基本形の単語はまとめてカウントしたくなることもあるでしょうし,形容詞だけを取ってきたいこともあるかもしれません.

このような場合,文章を対象にしたプログラムでは,文章を意味のある*2単位で分割し,その単位がどのような属性*3を持っているかを判別する方法があれば解決します.
そして,それをするのがまさに形態素解析器なのです.

*1 : 活用形ごとに異なる単語としてカウントする

*2 : 処理対象として意味のある

*3 : それが形容詞であるとかどのような活用になっているかとか

TF/IDF法

参考URL

TF(Term Frequency)

索引語頻度とも呼ばれるらしいです.

tf(i,j) = log2(freq(i,j) + 1) / log2(NoT)

文書jにおける単語iのTF値tf(i,j)は,
文書jにおける単語iの出現回数freq(i,j) + 1のlog2を取った値を
文書jにおける単語のバリエーション数のlog2を取った値で割ったもの
(追記)
この辺実は研究によってマチマチで,logをまったくかけなかったり全体にかけていたり底も色々.
とりあえずlog無し+1も無しが基本形で,そこから適用対象によって色々調整したらいい的な感じかな?

  1. 1しているのは,出現回数が0だった場合対策?

バリエーションが色々あって,+1していなかったりlog2をかけるのが全体だったりする.

「ある文書におけるある単語の出現回数をその文書中に出現する単語のバリエーション数で割ったもの」が基本.

参考

tfi = ni / Σk nk

単語iのtf値は,単語iの出現回数niを文書kに出現する総単語種別で割る

参考

IDF(inverse document frequency)

逆出現頻度と訳されたりする

ある単語のidf値 = 全文書 / ある単語が出現する文書数

参考

ベクトル空間モデル(Vector Space Model)

コサイン距離(Cosine Distance)

(コサインとサインの扱いを間違っていたので修正)

ベクトル空間モデルでベクトル同士の距離を比較するための尺度.

ベクトルa(Va)とベクトルb(Vb)の距離は次式

Va = (a1,a2,a3,...,ax)
Vb = (b1,b2,b3,...,bx)
CosDist(Va,Vb) = 1 - ( (Va*Vb) / ( √(Va^2) * √(Vb^2) ) )

1を引いている点に注意.
ベクトルの内積の求め方は次式.

Va * Vb = (a1 * b1) + (a2 * b2) + ... + (ax * bx)
Va^2 = (a1 * a1) + (a2 * a2) + ... + (ax * ax)

1を引く意味

コサインは,0~1の実数を取り,値が大きいほど*4角度が0に近くなる.
角度が0度の時に二つのベクトルは完全に重なるわけで,それが最も近い状態.
逆に,値が小さくなるほど*5角度が90度に近くなる.
角度が90度の時に二つのベクトルは直行するわけで,それが最も遠い状態.

しかし,コサイン「距離」を求めたいのだから値が大きい時に遠く小さい時に近くないとおかしい*6
そのため,1を引いている.

と解釈しましたが,あっているのかわかりません.
正しい解釈や,そのソースを持っている方がいらっしゃいましたら教えて頂けないでしょうか.

参考

*4 : 1に近いほど

*5 : に近いほど

*6 : 言葉的に

適合率/再現率,F値

適合率

検索結果に含まれる正解文書数/検索された文書の数

再現率

検索結果に含まれる正解文書数/全文書中の適合文書の数

F値

F=2/(1/R + 1/P)

N-Gram

文書から単語群を抽出するに形態素解析を行わずに文書の頭から順にN文字ずつ切り出していく方法.
N-GramのNの部分には何文字ずつ切り出すかが入る.
例えば,3-Gramで上の文を切り分けると次のようになる.

文書か
ら単語
群を抽
出する
に形態
素解析
を行わ
ずに文
書の頭
から順
にN文
字ずつ
切り出
してい
く方法.

……?
なんか重複して一文字ずつズラしていく

なんか
んか重
か重複
重複し
複して

こんな形が正式なの?かな?

検索エンジンの仕組み::Ngram(N-gram)とは何か & 形態素解析との比較
全文検索 – Wikipedia

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>