« 課題整理 | トップページ | 概念データモデル »

2012年8月16日 (木)

テーマミス対策の詳細

本家や他のミラーサイトでも解決済みかもしれませんが、動画説明文から、テーマを抽出する処理で、テーマが正しく取得できないケース(=一覧ページでテーマミスとなる)の対策について、紹介します。

1.【key:value】を、正規表現で取得

テーマや投稿者の名前を取得するために、動画説明文に【key:value】の形式で情報を記述してもらっていますが、この形式の文字列を解析する汎用処理を作りました。(以下のコード、utf-8専用です。)

function extractkey ( $subject, $key ) {
  $subject = preg_replace("/ /u", ' ', $subject);
  preg_match("/【\s*?{$key}\s*?[::]\s*?(\S*?)\s*?】/iu", $subject, $values);
  
  return $values[1];
}

$subject で与えられた文字列の中から、【key:value】の形式の文字列を、$keyで与えられたkeyで抽出します。
抽出した文字列の中から、valueに相当する部分を抽出し、返します。

記述書式のブレに対応するための対策は、以下のとおりです。
1)予め、$subjectに含まれる全角のスペースを全て半角に置き換え。
2)'\s*?'は、0文字以上の連続した空白(半角スペース、タブ、改行、等)を表します。余計な空白が含まれるケースの対策です。
3)'[::]'は半角コロンと全角コロンのどちらか1文字を表します。

'(\S*?)'が、テーマの文字列を抽出する部分で、0文字以上の連続した空白以外の文字を表します。( )でくくった部分が、$values[1]に入ります。

上記のコーディングで対応できないケースは以下のとおりです。
1)keyの表記が間違っており、全角を含んだり、スペースを含んだりするケース。
2)valueにスペースを含むケース(valueの抽出に失敗します)
3)意図して全角スペースを含むケース(全角スペースは半角スペースに置き換えるため、2)と同じ結果になります。)
※2)と3)は、nameの方で該当するケースがありそうなので、検討します。

2.全角のQを許可する

テーマの場合だけですが、第9回MMD杯のテーマ'Q'を、全角のQで表記してくる様なケースには、テーマ表記を正規化するための変換表を作って対応します。
テーマ表記のブレを正規化するための対応表をsetting.phpに定義しておき、

$reg_theme_cnv = array("Q" => 'Q');
extractkey()の結果を、この対応表で変換します。
if (isset($reg_theme_cnv[$t])) {
  $t = $reg_theme_cnv[$t];
}
テーマ'夢'として、'ゆめ'という表記を許可することもできます。

3.現状、自動処理できないケースと対策

1)【key:value】の記述が間違っているケース
例:前後のカッコのどちらかがない、keyの表記に全角を含む、keyの表記に空白を含む、等
対策:説明文の記述を直して頂くか、MMD杯運営の判断を、手動で反映する。

2)/api/getthumbinfo/で動画説明文が途中までしか取得できないケース
例:動画説明文に、"<"を含むと、その前で切れてしまうらしい。
対策:動画ページを表示して、目視で確認し、手動で反映する。

4.できるだけAngel-CUPでの手作業を減らすために

1)MMD杯運営の方に許可して頂ければ、ロックされているタグからテーマを取得することは可能です。
動画説明文の記述を優先、ロックされていないものは無視、複数ある場合は最初のタグ、等のルールの検討が必要です。

2)最終的に人が判断した結果は、マイリストコメントを使って、Angel-CUPに伝えることが可能です。
マイリストコメントは、マイリストRSSのnico-memoに出力されるので、その中に、【Theme:□□】と記述すれば、Angel-CUPのプログラムに機能追加することで、自動で処理できます。伝達もれで、ミラーサイトによってテーマが異なるケースを避ける事ができます。

« 課題整理 | トップページ | 概念データモデル »

Angel-CUP」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/588802/55429856

この記事へのトラックバック一覧です: テーマミス対策の詳細:

« 課題整理 | トップページ | 概念データモデル »

ウェブページ

儲かる?