コンテンツにスキップ

時刻表現の数値の正規化

ja-timexでは時刻表現を取得する前に、時刻表現の数値の正規化を行います。

正規化とTIMEXの関係

時刻表現の数値の正規化では、下記のような処理が行われます。

処理内容 正規化前 正規化後
全角から半角への変換 2021年 2021年
漢数字の算用数字化 明治二十六年 明治26年
桁数を表すコンマの削除 1,000時間 1000時間

TIMEXクラスのクラス変数であるtextおよびspanは、正規化後のテキストおよび開始/終了位置が利用されます。下記の例では、「明治二十六年」ではなく正規化後の「明治26年」と、その文字列長に対応した開始/終了位置が利用されます。

In []: timex_parser = TimexParser()
  ...: timexes = timex_parser.parse("明治二十六年")

In []: timexes[0].text
Out[]: '明治26年'

In []: timexes[0].span
Out[]: (0, 5)

正規化前の数値の取得方法

正規化前のテキストや開始/終了位置を取得するには、TIMEXクラスのraw_textおよびraw_spanのクラス変数を利用します。

In []: timexes[0].raw_text
Out[]: '明治二十六年'

In []: timexes[0].raw_span
Out[]: (0, 6)

なお、正規化が行われない時刻表現に関しては、それぞれのクラス変数textraw_textおよびspanraw_spanは一致します。

正規化前後の入力文の取得

正規化前後の入力文を取得するには、TimexParserのインスタンスのraw_textおよびprocessed_textを利用します。

In []: timex_parser.raw_text
Out[]: '明治二十六年'

In []: timex_parser.processed_text
Out[]: '明治26年'