韓日ミニ辞典開発歴に戻る

요の分岐処理

最初に,文字列が"요"で終わる場合の分岐処理を書きます

 case 0: #母音終わり
 switch ($last_spel) {
  case "가":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_ga($morph, $last_morph, "", "");
    break;
  case "게":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_ge($morph, $last_morph, "", "");
    break;
  case "고":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_go($morph, $last_morph, "", "");
    break;
  case "과":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_gwa($morph, $last_morph, "", "");
    break;
  case "도":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_do($morph, $last_morph, "", "");
    break;
  case "에":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_qe($morph, $last_morph, "", "");
    break;
  case "와":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_qwa($morph, $last_morph, "", "");
    break;
  case "요":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_qyo($morph, $last_morph, "", "");
    break;
  case "의":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_qyi($morph, $last_morph, "", "");
    break;
  case "이":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_qi($morph, $last_morph, "", "");
    break;
  }
  break;
 case 4: #N終わり
 switch($last_spel) {
  case "는":
    $last_morph = substr($morph, $len_w-6, 3);
    $found = Analyze_nyn($morph, $last_morph, "", "");
    break;
  case "던":
{以下略}

요の形態素解析処理

요の前が「아,어,해」の3通りの場合に分けて処理を行います。
아であれば,その前の母音が陽母音か否かを調べます。
어であれば,その前の母音が陰母音か否かを調べます。
해であれば,해を하に変えます。

#------------------------#

#  qyoの解析形態素解析  #

#------------------------#
function Analyze_qyo($morph, $last_morph, $x, $y) {#utf-8code
$found="";
global $flag;
global $script;
global $pastSet;
$ending="(略式丁寧体語尾=平叙文・疑問文・勧誘文・命令文)";
  $l_m=strlen($morph);
  $stem = substr($morph, 0, $l_m-3); #語幹の切り出し
  if ($last_morph=="아"){
    $last_stem = substr($morph, $l_m-6, 3);
    $last_Scode = substr(Uni_conv($last_stem),0,5)-44032;
    $VowCons_code = $last_Scode % 28;
    $Vow_code = (($last_Scode - $VowCons_code) % 588 ) /28 ; #母音の種類
      if ($Vow_code==0||$Vow_code==2||$Vow_code==8){
        $found+=1;
        $keyword = mb_convert_encoding($stem."다", 'UTF-8', 'auto');
        print "【解析".$found."】 <a href=\"$script?key=$keyword\">".$stem."</a>(陽語幹用言)+";
        print "아요".$ending."<br>";
      } else {
        print "<font color=red>入力間違いの可能性があります:".$stem."+아요【陽母音と陰母音または縮約形】</font><br>\n";
      }
    } elseif ($last_morph=="어") { #-어요
      $last_stem = substr($morph, $l_m-6, 3);
      $last_Scode = substr(Uni_conv($last_stem),0,5)-44032;
      $VowCons_code = $last_Scode % 28;
      $Vow_code = (($last_Scode - $VowCons_code) % 588 ) /28 ; #母音の種類
      if ($Vow_code<>0&&$Vow_code<>2&&$Vow_code<>8){
        $found+=1;
        $keyword = mb_convert_encoding($stem."다", 'UTF-8', 'auto');
        print "【解析".$found."】 <a href=\"$script?key=$keyword\">".$stem."</a>(陰語幹用言)+";
        print "어요".$ending."<br>";
      } else {
        print "<font color=red>入力間違いの可能性があります:".$stem."+어요【陽母音と陰母音または縮約形】</font><br>\n";
      }
    } elseif ($last_morph=="해") { #-해요
      $newStem=$stem."하";
      $found+=1;
      $keyword = mb_convert_encoding($newStem."다", 'UTF-8', 'auto');
      print "【解析".$found."】 <a href=\"$script?key=$keyword\">".$newStem."</a>(하語幹用言)+";
      print "여요".$ending."<br>";
    }
  return $found;
}

韓日ミニ辞典開発歴に戻る


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-06-30 (木) 08:15:29 (3160d)