パスワードを忘れた? アカウント作成
14081578 journal
人工知能

yasuokaの日記: RIBESは文節と短単位と文字単位のどれを好むのか

日記 by yasuoka

平尾努・磯崎秀樹・須藤克仁・Duh Kevin・塚田元・永田昌明『語順の相関に基づく機械翻訳の自動評価法』(自然言語処理, Vol.21, No.3 (2014年6月), pp.421-444)を読みつつ、RIBESの「分かち書き」には何が適切なのだろう、というのが気になった。日本語なら、まあ短単位だろうと思いつつも、私(安岡孝一)なりに試してみたところ、面白い結果が出たので、日記に書いておくことにする。対象としたのは、参照訳「朋有り遠方より来たる、亦た楽しからずや。」評価訳「朋有りて遠方より来る。また楽しまずや。」RIBESパラメータα=0.25,β=0.1である。

  • 文節 (朋有り 遠方より 来たる、 亦た 楽しからずや。 vs 朋有りて 遠方より 来る。 また 楽しまずや。)
    RIBES: 0.000000
  • 短単位 (朋 有り 遠方 より 来たる 、 亦た 楽しから ず や 。 vs 朋 有り て 遠方 より 来る 。 また 楽しま ず や 。)
    RIBES: 0.873935
  • 文字単位 (朋 有 り 遠 方 よ り 来 た る 、 亦 た 楽 し か ら ず や 。 vs 朋 有 り て 遠 方 よ り 来 る 。 ま た 楽 し ま ず や 。)
    RIBES: 0.937667

この例に限って言えば、できるだけ細かく切った方が、同じ文でも評価が高くなってしまう、ということだ。考えてみれば当たり前なのだが、日本語の自然言語処理においては、評価をどうおこなうかにそもそも恣意性がある、という好例だろう。なお、私自身が使ったシェル・スクリプトを以下に示しておく(「pip3 install 'unidic2ud>=1.7.7'」が必要だが、とりあえずコメントアウトしてある)ので、興味のある向きは追試してみてほしい。

#! /bin/sh
REFR=朋有り遠方より来たる、亦た楽しからずや。
EVAL=朋有りて遠方より来る。また楽しまずや。
RIBES=http://www.kecl.ntt.co.jp/icl/lirg/ribes/package/RIBES-1.03.tar.gz
# pip3 install 'unidic2ud>=1.7.7'

TMP=/tmp/ribes$$
trap "rm -rf $TMP ; exit 2" 1 2 3 15
python3 -c '
import urllib.request,tarfile
f,h=urllib.request.urlretrieve("'$RIBES'")
with tarfile.open(f) as t:
  t.extractall("'$TMP'")
'
cd $TMP/`basename $RIBES .tar.gz` || exit 1

for P in '
import unidic2ud.cabocha as CaboCha
c=CaboCha.Parser("kindai")
s=c.parse(input()).toString(CaboCha.FORMAT_TREE)
for x in ["EOS"," ","-","|","\n"]:
  s=s.replace(x,"")
print(s.replace("D"," "))
' '
import unidic2ud
ja=unidic2ud.load("kindai")
s=ja(input())
print(" ".join(t.form for t in s if t.form!="_"))
' '
print(" ".join(t for t in input()))
'
do echo $REFR | python3 -c "$P" | tee reference
   echo $EVAL | python3 -c "$P" | tee evaluating
   python3 RIBES.py -r reference evaluating
done

rm -rf $TMP
exit 0

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...