Solr のWordDelimiterFilterに似たものに取り組んでいますが、Java ではありません。
次のように単語をトークンに分割したい:
P90X = P, 90, X (split on word/number boundary)
TotallyCromulentWord = Totally, Cromulent, Word (split on lowercase/uppercase boundary)
TransAM = Trans, AM
上記の例に固有のものではなく、一般的な解決策を探しています。できれば、後読みをサポートしていない正規表現のフレーバーですが、必要に応じて、後読みを実行できる PL/perl を使用できます。
SOでいくつかの回答が見つかりましたが、それらはすべて後読みを使用しているようです。
分割するもの:
- 小文字から大文字への変換
- 文字から数字へ、または数字から文字への移行
- (オプション) 他のいくつかの文字に分割 (- _)
一番気になるのは1と2です。