見出し画像

NLP | JCLdic(日本会社名辞書)をSudachi辞書に変換してみた

日本語の自然言語処理ライブライ「GINZA」(v5を想定)で固有表現抽出の精度を上げるために、TIS株式会社が無償公開してくれている「JCLdic」を利用してみたいというモチベーションから試してみました。

変換を試したソースコードはこちらに置いています。
※試すにあたって複数のブログを参考にさせて頂きました

JCLdicについて

リンク先の一部を引用させて頂くと、国税庁の公開データをもとに表記揺れを意識して作られた800万以上の単語が登録された辞書となっているようです。

「JCLdic」は、企業名の表記揺れを正確に認識するために、様々な表記を網羅した日本企業名辞書です。例えば「TIS株式会社」の表記は「TIS株式会社」(全角)、「TIS」(アルファベット)、「ティアイエス」(カタカナ)などとなりますが、「JCLdic」を活用することで同じ企業を指す商号として認識することが可能になります。
作成においては、国税庁の公開データから480万以上の法人データを収集し、重名の会社名を除いて、一意の210万の会社名をベースに、別名生成手法によって、800万以上の会社別名を生成しました。日本の会社名は漢字、アルファベット、ふりがな、カタカナ4つの記号を混合して使用されていますが、高い質の別名を生成するため、ルールで異なった記号を考慮しました。例えば一意の正式商号「TIS株式会社」があるときに、書式の削除、ふりがなの追加、正規化などのプロセスによって、「TIS」、「ティアイエス」、「テイアイエス」などの別名が生成されます。

ダウンロードリンク先では、「CSVフォーマット」と「MeCabフォーマット」がダウンロード出来るようです。

We provide two kinds of format. The CSV format contains one name per line, and the MeCab format contains one record per line. Users can directly open MeCab CSV format to check the record. The MeCab Dic format is compiled by MeCab, which can be used as the user dictionary of MeCab.

「CSVフォーマット」を利用させてもらいます(ありがたい!)

GINZAの辞書について

前述の「JCLdic」をGINZAで利用してみたいのですが、GINZAの形態素解析には「Sudachi」が利用されているようです。

GINZAの依存パッケージにもSudachiが存在しています。
※v4.0.0からSudachiPy辞書はPyPI(SudachiDict-core)の公式パッケージに変更になったとの記載あり

spacy>=3.0.6,<3.2.0
plac>=1.3.3
SudachiPy>=0.5.2,<0.6.0
SudachiDict-core>=20210608

MeCab辞書とSudachi辞書のフォーマット

それぞれの辞書はフォーマットが異なっています。

MeCab辞書のフォーマットは以下の13カラムがあるようです。
※リンク先の「エントリのフォーマット」に記載

0 表層形
1 左文脈ID
2 右文脈ID
3 コスト
4 品詞
5 品詞細分類1
6 品詞細分類2
7 品詞細分類3
8 活用形
9 活用型
10 原形
11 読み
12 発音

Sudachi辞書のフォーマットは以下の18カラムがあるようです。

0 見出し (TRIE 用)
1 左連接ID
2 右連接ID
3 コスト
4 見出し (解析結果表示用)
5 品詞1
6 品詞2
7 品詞3
8 品詞4
9 品詞 (活用型)
10 品詞 (活用形)
11 読み
12 正規化表記
13 辞書形ID
14 分割タイプ
15 A単位分割情報
16 B単位分割情報
17 ※未使用

変換の際に引っかかった点

Sudachi辞書フォーマットに合わせ直すソースコードは他の方のブログを参考にさせて頂いたのですが(感謝!)、変換を進める中で2点ほど引っかかった点がありました。

1点目は、JCLdic(CSVフォーマット)の「原形」の値の中に「,」(カンマ)が含まれていました。そのため、本来の13カラムより多いカラム数となっているレコードがありました。
※カンマが複数個含まれているレコードも存在
※2021/11/08時点で確認したところ58レコード存在

そのため、13カラムより多いレコードは「原形」の中に含まれるカンマを取り除きました。

スクリーンショット 2021-11-08 18.25.51

2点目は、GINZAで利用してみたところ「品詞3」の内容でエラーになるようで「品詞3」に登録される「組織」を「一般」に変換してSudachi辞書を作成するようにしました。
こちらは分析したというより、とりあえず「一般」で試したらエラーにならずに動いた、という状態です。

↓JCLdicの「hinshi_sai2」としては「組織」となっているところを・・・

スクリーンショット 2021-11-08 18.26.06

↓Sudachi辞書のフォーマットにする際に「hinshi_sai2」を「一般」に変換。

スクリーンショット 2021-11-08 18.26.29

ちなみに、8,491,326単語ある状態でSudachi辞書のビルドは13分近くかかりました。
MacBook Pro (15-inch, 2018)
2.2Ghz 6 core, Intel Core i7
32GB 2400MHz DDR4

スクリーンショット 2021-11-08 18.31.04

作成された「user.dic」は「sudachi.json」に「userDict」として追記することで利用出来ます。

これから

ひとまずこれでGINZAの形態素解析で利用する辞書として使えそうなので、色々試せたらと思います。

この記事が気に入ったらサポートをしてみませんか?