highlights

2018年1月16日火曜日

自然言語処理の予習 意味の解析6

はじめに

放送大学教材の「自然言語処理」を勉強することにしました。
目的はうさぽんbotを賢く運用するためです。
とりいそぎ、勉強会に出る。

教材は下記のやつ。
自然言語処理

予習開始(1)

6章、「意味の解析(1)」から読み出す。シソーラスとか聞いたことがある単語が出てくる。
  • 語の創造的使用(直喩・顕現性・隠喩・換喩)
  • シソーラス
  • 同義語
以上はフンフンと読んだだけ。

分布類似度

PMIを求めると分布類似度が分かって、関連語を求めやすいとかなんとか。
出てきた計算式が下記。
  • Jaccard係数
  • Simpson係数
  • Dice係数
定義に従って書いてみる。合ってるかどうかは良くわからない。

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 件のコメント:

コメントを投稿