LoginSignup
2
1

More than 3 years have passed since last update.

Watson Explorer (WEX)での和暦⇔西暦をパターン辞書で取得する方法

Posted at

1. Watson Explorer (WEX)とは

Watson Explorer(WEX)とは、IBM製の文書分析ツールである。
WEXにCSVなどの文書を投入しWEXが文書に対して形態素解析を行うので、単語同士の関係性を見ることができ。また、ある単語で検索する場合、その単語と結びつきが強い単語が提示されるので、探していた文書の絞り込みが行いやすいといった特徴がある。

[参考]
製品概要

2. パターン辞書とは

WEXには2種類の辞書機能が存在する。
1つはユーザー辞書といい、製品名や化学物質名といった業界特有の専門用語をWEXに識別させるために登録するものである。これは、単語を登録し、単語に紐づく言い回し表現も登録することができる。
もう1つはパターン辞書といい、年月日など特定の決められたパターンの表現を識別するために登録するものである。これは、正規表現を組み込んだ形で登録できる。

3. 和暦⇔西暦をパターン辞書

【2019年, 2019/01/01, 2019/1/01, 2019/01/1, …などを2019年として抽出】

・[2019年]を識別

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^[2][0][1][9]$/"/>
 <w id="1" lex="/^(年)$/" />
</mi>

・[2019/01/01]を識別
/ は、\でエスケープする。月や日が二桁で表現されれいるものを抽出する。

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^[2][0][1][9](\/)[0-9][0-9](\/)[0-9][0-9]$/"/>
</mi>

・[2019/1/01]を識別
月が一桁で記述されているものを抽出する。

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^[2][0][1][9](\/)[0-9](\/)[0-9][0-9]$/"/>
</mi>

・[2019/12/1]を識別
日付が一桁で記述されているものを抽出する。

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^[2][0][1][9](\/)[0-9][0-9](\/)[0-9]$/"/>
</mi>

【平成31年, H31.1.1,平成三十一年 …などを2019年として抽出】

・[H31年]、[平成31年]を識別

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^((H)|(平成))/"/>
 <w id="1" lex="/^[3][1]$/"/>
 <w id="2" lex="/^(年)$/" />
</mi>

・[H31.1.1]、[平成31.1.1]を識別

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^((H)|(平成))/"/>
 <w id="1" lex="/^[3][1](\.)[0-9](\.)[0-9]$/"/>
</mi>

・[平成三十一年]を識別

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^(平成)/"/>
 <w id="1" lex="/^[三][十][一]$/"/>
 <w id="2" lex="/^(年)$/" />
</mi>

【‘19/01/01, ‘19, …などを2019年として抽出】

・['19/01/01]を識別
'をエスケープ。
この例ではよく見えないが、single-quoteも色々な single-quoteがあるので4つくらいパターンを作ってる。

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^((\')|(\’)|(\‘)|(\'))[1][9](\/)[0-9][0-9](\/)[0-9][0-9]$/" />
</mi>

・['19]を識別

<mi category="$.date_rule" value="2019年" >
 <w id="0" lex="/^((\')|(\’)|(\‘)|(\'))$/" />
 <w id="1" lex="/^[1][9]$/" />
</mi>

year.png

【2019年3月1日、2019年03月01日 …などを2019年3月1日として抽出】

・[2019年3月1日]を識別
3月は「3」と「月」ではなく「3月」としてWEXACは抽出する。

<mi category="$.date_rule" value="2019年3月1日" >
 <w id="0" lex="/^[2][0][1][9]$/"/>
 <w id="1" lex="/^(年)/" />
 <w id="2" lex="/^(3月)/" />
 <w id="3" lex="/^[1]$/"/>
 <w id="4" lex="/^(日)/" />
</mi>

・[2019年03月01日]を識別

<mi category="$.date_rule" value="2019年3月1日" >
 <w id="0" lex="/^[2][0][1][9]$/"/>
 <w id="1" lex="/^(年)/" />
 <w id="2" lex="/^[0][3]$/"/>
 <w id="3" lex="/^(月)/" />
 <w id="4" lex="/^[0][1]$/"/>
 <w id="5" lex="/^(日)/" />
</mi>

【平成31年3月1日, H31年03年01日、 …などを2019年として抽出】

・[平成31年3月1日]、[H31年3月1日]を識別

<mi category="$.date_rule" value="2019年3月1日" >
 <w id="0" lex="/^((H)|(平成))/" />
 <w id="1" lex="/^[3][1]$/"/>
 <w id="2" lex="/^(年)/" />
 <w id="3" lex="/^(3月)/" />
 <w id="4" lex="/^[1]$/"/>
 <w id="5" lex="/^(日)/" />
</mi>

・[平成31年03月01日]を識別

<mi category="$.date_rule" value="2019年3月1日" >
 <w id="0" lex="/^((H)|(平成))/" />
 <w id="1" lex="/^[3][1]$/"/>
 <w id="2" lex="/^(年)/" />
 <w id="3" lex="/^[0][3]$/"/>
 <w id="4" lex="/^(月)/" />
 <w id="5" lex="/^[0][1]$/"/>
 <w id="6" lex="/^(日)/" />
</mi>

date.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1