7.8.15. TokenRegexp

7.8.15.1. 概要

バージョン 5.0.1 で追加.

ご用心

このトークナイザーは実験的です。仕様が変わる可能性があります。

ご用心

このトークナイザーはUTF-8でしか使えません。EUC-JPやShift_JISなどと一緒には使えません。

TokenRegexp はインデックスを使った正規表現検索をサポートするトークナイザーです。

7.8.15.2. 構文

TokenRegexp には、引数がありません。

TokenRegexp

7.8.15.3. 使い方

一般的に、正規表現検索は逐次検索で実行します。しかし、次のケースはインデックスを使って検索できます。

  • hello のようにリテラルしかないケース

  • \A/home/alice のようにテキストの最初でのマッチとリテラルのみのケース

  • \.txt\z のようにテキストの最後でのマッチとリテラルのみのケース

多くのケースでは、逐次検索よりもインデックスを使った検索の方が高速です。

TokenRegexp はベースはバイグラムを使います。 TokenRegexp は、インデックス時に、テキストの先頭にテキストの先頭であるというマーク( U+FFEF )を入れ、テキストの最後にテキストの最後であるというマーク( U+FFF0 )を入れます。

実行例:

tokenize TokenRegexp "/home/alice/test.txt" NormalizerAuto --mode ADD
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     {
#       "position": 0,
#       "force_prefix": false,
#       "value": "￯"
#     },
#     {
#       "position": 1,
#       "force_prefix": false,
#       "value": "/h"
#     },
#     {
#       "position": 2,
#       "force_prefix": false,
#       "value": "ho"
#     },
#     {
#       "position": 3,
#       "force_prefix": false,
#       "value": "om"
#     },
#     {
#       "position": 4,
#       "force_prefix": false,
#       "value": "me"
#     },
#     {
#       "position": 5,
#       "force_prefix": false,
#       "value": "e/"
#     },
#     {
#       "position": 6,
#       "force_prefix": false,
#       "value": "/a"
#     },
#     {
#       "position": 7,
#       "force_prefix": false,
#       "value": "al"
#     },
#     {
#       "position": 8,
#       "force_prefix": false,
#       "value": "li"
#     },
#     {
#       "position": 9,
#       "force_prefix": false,
#       "value": "ic"
#     },
#     {
#       "position": 10,
#       "force_prefix": false,
#       "value": "ce"
#     },
#     {
#       "position": 11,
#       "force_prefix": false,
#       "value": "e/"
#     },
#     {
#       "position": 12,
#       "force_prefix": false,
#       "value": "/t"
#     },
#     {
#       "position": 13,
#       "force_prefix": false,
#       "value": "te"
#     },
#     {
#       "position": 14,
#       "force_prefix": false,
#       "value": "es"
#     },
#     {
#       "position": 15,
#       "force_prefix": false,
#       "value": "st"
#     },
#     {
#       "position": 16,
#       "force_prefix": false,
#       "value": "t."
#     },
#     {
#       "position": 17,
#       "force_prefix": false,
#       "value": ".t"
#     },
#     {
#       "position": 18,
#       "force_prefix": false,
#       "value": "tx"
#     },
#     {
#       "position": 19,
#       "force_prefix": false,
#       "value": "xt"
#     },
#     {
#       "position": 20,
#       "force_prefix": false,
#       "value": "t"
#     },
#     {
#       "position": 21,
#       "force_prefix": false,
#       "value": "￰"
#     }
#   ]
# ]