はじめに
辞書不要の「文字種を用いての分かち書き」の考察・評価メモ。
IT関係文章(カタカナ、英字が多い)と、法律関係文章(漢字多い)で実験する。
本書の結論は「汎用的な実装は難しいが、ドメイン特化の工夫をすれば使えそう」。
参考
実験
IT関係の文章であるstr1と、法律関係の文章であるstr2を用意して評価している。
str1 = "システム・リソースへのアクセスを表現する抽象クラスです。すべてのアクセス権は、特定のPermissionサブクラスのセマンティックスを定義するための抽象機能を持つほか、実装をサブクラスに依存する名前を持ちます。"
str2 = "前項の場合において、未成年者がその営業に堪えることができない事由があるときは、その法定代理人は、第四編(親族)の規定に従い、その許可を取り消し、又はこれを制限することができる。"
正規表現委はregexを用いる。[\u3041-\u3093]はひらがな、[\u30A1-\u30F4]はカタカナ。実行する箇所はfindallメソッドのみで、リストが返される。
import regex
p = regex.compile('(\p{Han}+|\p{Script=Latin}+|[\u3041-\u3093]+|[\u30A1-\u30F4]+)')
p.findall(str1)
まずはIT文章から(工夫前)
実行結果は以下の通り。
['システム',
'リソ',
'ス',
'への',
'アクセス',
'を',
'表現',
'する',
'抽象',
'クラス',
'です',
'すべての',
'アクセス',
'権',
'は',
'特定',
'の',
'Permission',
'サブクラス',
'の',
'セマンティックス',
'を',
'定義',
'するための',
'抽象機能',
'を',
'持',
'つほか',
'実装',
'を',
'サブクラス',
'に',
'依存',
'する',
'名前',
'を',
'持',
'ちます']
気になる点
リソース -> 'リソ', 'ス'
持ちます -> '持', 'ちます'
アクセス権 -> 'アクセス', '権'
などがある。
良い点
「抽象機能」や「サブクラス」が一つのトークンになっている。
改善案(工夫後)
少し工夫する。カタカナに伸ばし棒(正式名称わからん)、漢字一文字とひらがな(\p{Han}[\u3041-\u3093]+)、カタカナと漢字を追加した。
※ 伸ばし棒は、適宜ほかの箇所にも追加したほうがよさげ。
p2 = regex.compile('(\p{Han}[\u3041-\u3093]+|[\u30A1-\u30F4ー]+\p{Han}+|\p{Han}+|\p{Script=Latin}+|[\u3041-\u3093]+|[\u30A1-\u30F4ー]+)')
p2.findall(str1)
実行結果は以下の通り。
['システム',
'リソース',
'への',
'アクセス',
'を',
'表現',
'する',
'抽象',
'クラス',
'です',
'すべての',
'アクセス権',
'は',
'特定',
'の',
'Permission',
'サブクラス',
'の',
'セマンティックス',
'を',
'定義',
'するための',
'抽象機能',
'を',
'持つほか',
'実装',
'を',
'サブクラス',
'に',
'依存',
'する',
'名前',
'を',
'持ちます']
「リソース」や「アクセス権」は改善している。
漢字二文字とカタカナを追加すれば「'抽象', 'クラス'」も「抽象クラス」になる。副作用も出てくると思われる。ドメインごとの文章の特徴を掴めば利用できそうな気もする。
つぎに法律文章
法律文章についてもやってみる。
['前項',
'の',
'場合',
'において',
'未成年者',
'がその',
'営業',
'に',
'堪えることができない',
'事由',
'があるときは',
'その',
'法定代理人',
'は',
'第四編',
'親族',
'の',
'規定',
'に',
'従い',
'その',
'許可',
'を',
'取り',
'消し',
'又はこれを',
'制限',
'することができる']
民法においては、接続詞を漢字からひらがなにreplaceしておく必要があることがわかっている(「又は」->「または」など)。
'取り', '消し'は「取り消し」になってほしいので漢字一文字ひらがな一文字漢字一文字ひらがな一文字を追加すべきかどうか。
考察
法律においては、漢字がまとまった専門用語が多く、辞書を用いた形態素解析器より使える感触を得た。
IT文章で工夫したカタカナに伸ばし棒を追加したが、法律(条文には)カタカナは含まれていない(古い法律除く)ので、効いていないはずである。
IT文章ではカタカナベースに工夫できる余地が多々ありそう。漢字二文字とカタカナの「'抽象', 'クラス'」も「抽象クラス」など。
文章のドメインごとに特徴があり、工夫していく必要がある。