2016-10-21 4 views
1

core-nlpパイプライン内でregexner用の正規表現pattenrを使用したいと考えています。私のエンティティ/トークンはcore-nlpのregexNER内のpattens

Machine_DS2302 

です。第2の部分はalphanumericです。 (これはワイルドカード中である)私が持っているもの

は現在

Machine_.* MachineNumber 

である。しかし、これはすべての注釈が表示されます。 2番目の部分に_ 正規表現に基づいてMachineNumberというタグを追加します。つまり、_の後の2番目の部分が数字の場合は、タグに割り当てます。

正規表現パターン

^[a-zA-Z0-9]*$ 

しかし、たとえ

Machine_^[a-zA-Z0-9]*$ 

どのようなパターンがregexNERのためのようになりますが動作しませんか?

+1

'Machine_ [a-zA-Z0-9] *'アンカーを削除する必要があります。 'Machine_([a-zA-Z0-9] *) DS2302'値を別途入力してください。 –

+0

@WiktorStribiżew、そうです。これをソリューションとして追加することができます。 – Betafish

答えて

0

アンカーは冗長です。^が文字列の開始位置に一致し、$が文字列の終了位置と一致するため、実際にパターンが一致しないようにします。

あなたが_後の部分にアクセスする必要があるので、あなたもキャプチャし、そのキャプチャグループを使用する必要があります。

Machine_([a-zA-Z0-9]*) 

(...)は英数字の値を持つ部分マッチを作成します。

*+に置き換えることもできます。英数字の部分が少なくとも1文字である必要があります。

+0

[docs suggest](http://nlp.stanford.edu/software/regexner.html)のようなJava正規表現のフレーバであれば、 '[A-Za-z0-9]'を '\ p { Alnum} 'を使用して英数字を一致させます。あるいは、Unicode文字を扱う場合は、 '[\ p {L} \ p {M} 0-9]'を使うことができます。 –

関連する問題