はじめに
放送大学教材の「自然言語処理」を勉強することにしました。目的はうさぽんbotを賢く運用するためです。
とりいそぎ、勉強会に出る。
教材は下記のやつ。
自然言語処理
予習開始(1)
6章、「意味の解析(1)」から読み出す。シソーラスとか聞いたことがある単語が出てくる。
- 語の創造的使用(直喩・顕現性・隠喩・換喩)
- シソーラス
- 同義語
以上はフンフンと読んだだけ。
分布類似度
PMIを求めると分布類似度が分かって、関連語を求めやすいとかなんとか。
出てきた計算式が下記。
- Jaccard係数
- Simpson係数
- Dice係数
定義に従って書いてみる。合ってるかどうかは良くわからない。
Jaccard係数
Jaccard係数
def jaccard(token_list1, token_list2):
lst1 = set(list(token_list1))
lst2 = set(list(token_list2))
a = len(lst1 & lst2)
b = len(lst1 | lst2)
if b > 0:
return a / b
else:
return 0.0
Simpson係数
def simpson(token_list1, token_list2):
lst1 = set(list(token_list1))
lst2 = set(list(token_list2))
a = len(lst1 & lst2)
b = float(min(map(len, (lst1, lst2))))
if b > 0:
return a / b
else:
return 0.0
Dice係数
def dice(token_list1, token_list2):
lst1 = set(list(token_list1))
lst2 = set(list(token_list2))
a = 2 * len(lst1 & lst2)
b = float(sum(map(len, (lst1, lst2))))
if b > 0:
return a / b
else:
return 0.0
多義性
多義語の解決。語義曖昧性解消。注釈付与コーパスがあれば文脈中の語からどの意味の語か特定できる。
感想
なんかやりたい分野に近いことは分かるけど、いまいちどう役立てるかわからない。
分布類似度は自然言語処理に限らずいろんな分野で応用できそう。
0 件のコメント:
コメントを投稿