[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02051] Re: guess error (date)



乃村です.

> 切りの無い欲を言うと、年末あたりに飛び交うメールの事を考えて
> 「本年」、「来年」、「今年」とかにまで対応してくれるともっとう
> れしいのですが...  拙い知識でソースをみた感想では、「今の作り
> では難しい」というところでしょうか?

ソースコードの冒頭に,どういうことをしているか
書いていますが,改善の必要があるのは,

  (a1) 文書の中から,「日付の範囲」を表すような文字列を集める
  (a2) 集めた「日付の範囲」に点数を付ける
  (a3) 点数の一番高い順に結果を返す

という手順のうちの,(a1) の部分ですね.
本来は,

  (b1) 文書の中から,「日付」を表すような文字列を集める
  (b2) 集めた 「日付」 に点数を付ける
  (b3) 集めた 「日付」 のうち,特定の 2つの「日付」が
       「日付の範囲」を表すような場合は,
       その 2つの「日付」に,得点なり従属関係などの属性を付ける.
  (b4) 点数の一番高い順に結果を返す

としないとうまくいきません.

「3月18日から2日間」 などというのをうまく扱うには (a1-3) の方が
楽なのです.このへんの作りは ↓ がうまく扱えない原因にもなってます.

> (1) (1回めのguess)  2005/03/16 
> (2) 手で "-" 入力
> (3) (2回めのguess (C-n or C-p))  2005/03/31
> 
>   ==> 2005/03/16-2005/03/31

つまり,候補(ハイライトする範囲) を「日付の範囲」
でしか管理していないので,後ろだけを別に拾えないのです.

また,mhc-guess-date-regexp-list
日付を表す正規表現を書くのが難しい原因にもなってます.
(「日付」ではなくて,「日付の範囲」を
表す正規表現を書かないといけないため)

なので,そろそろリライトしないとだめかな,
という気持ちなんですが,今のままでもそこそこの
性能なだけに,腰が重いってのが正直なところです.

18日に,そそのかされて頑張るきっかけを
作ろうかと思ってます.:-)
--
nom