形態素解析器Sudachiの「辞書」はどのように作られているか: 複数の分割単位を例として

10 min read読了の目安(約9000字

これは、Sudachi開発元であるワークス徳島NLPの末席に連なっていた筆者による、個人的な覚え書きです。組織を代表した情報や意見ではなく、誤り等は全て著者個人の責任です。

筆者自身は辞書の開発には関わっていませんが、ほとんど知られていない、専門家達の仕事と悩みへ触れる機会になればと思い、執筆しました。

形態素解析器Sudachi

Sudachiは、株式会社ワークスアプリケーションズの徳島人工知能NLP研究所が開発する形態素解析器です。形態素解析は、人間の言葉を機械で扱う自然言語処理において、多くの場合に基盤となる技術で、主には、テキストを分割する「Segmentaion」、語形を辞書形にする「Stemming」、動詞や名詞といった品詞を付与する「Part-of-Speech Tagging」を行うものです。

世の中には多くの形態素解析器がありますが、その中でもSudachiの特色として「複数粒度による分割」があります。実用上、用途によって欲しい長さは異なります。以下に例を示します;

Sudachiにはこのほかにも、様々な特徴があります;

  • 表記の正規化
    • 例: {空き缶, 空缶, 空き罐, 空罐, 空きカン, 空きかん} → 全て 空き缶
  • 機能のプラグイン化
    • 未知語処理、数値正規化、...
    • ユーザーも独自のプラグインを作成できる(品番・型式の抽出、など)
  • etc.

本稿では詳細を述べませんが、関心のある方は以下の資料などをご参照ください;

(また、ワークス徳島NLPではSudachi以外にも、同義語辞書単語分散表現係り受け解析器など、様々なツール・言語資源を開発しています; ワークス徳島NLPリソースのページをご覧ください)

形態素解析においては多くの場合、「辞書」が鍵を握ります。Sudachiも、それ自体はソフトウェアではありますが、それにあわせて開発している、深い知識と長年の経験を持った専門家による大規模で高品質な辞書が、特色の源泉となっています。

形態素解析のための辞書

一般的によく使われる形態素解析器のMeCabkuromojiで利用できる日本語形態素解析辞書としては、以下のものがあります;

  1. IPADIC
  2. NAIST Japanese Dictionary
  3. UniDic 解析用辞書
  4. NEologd

IPADICとNAIST Japanese Dictionaryは、もう長らく更新がされていません。UniDicは、国立国語研究所による電子化辞書のプロジェクト(設計方針、データベース、解析用辞書の総称)です。NEologdは、Web上のリソースから半自動的に新語を獲得して作成されている辞書です。

それらを踏まえてワークス徳島NLPにより開発されているのが「Sudachi辞書」です。

Sudachi辞書とはなにか

Sudachi辞書(SudachiDict)は、形態素解析器Sudachiのための辞書です。汎用的に使える大規模かつ高品質な言語資源を目指して開発されています。

これは、UniDicとNEologdを下敷きにしています。UniDicはその性質上、そのまま使うのには難があります。またNEologdは、複数の短い単位からなる固有表現がひとかたまりで登録されているため、そのまま検索システムで利用すると再現率が低くなるといった支障があります。このことから、Sudachi辞書はこれらソースをもとに修正や語彙追加を行っています。その内実の一端を後述します。

またこの辞書は、専門家により継続的に更新されています。数ヶ月に一回程度、新たなバージョンがリリースされます。例えば前回のアップデート(2020年7月22日版)では ソーシャルディスタンスPCR検査 といった語句も追加されました。大学などの機関による資源は、プロジェクト満了や学生の卒業などにより更新が止まってしまうことがありますが、Sudachi辞書は企業のもとで、少なくとも向こう10年は続けていくつもりで進められています。

Sudachi辞書には、Small、Core、Fullという三つの異なるサイズのものがあります。参考数値として、IPADICは約24万、UniDicは約87万の見出しを収録しています。

表: Sudachi辞書 収録見出し数(2020年9月11日版)

Small Core Full
全て 768,031 1,619,720 2,927,984
A単位 483,327 795,512 1,165,780
B単位 283,223 304,944 319,237
C単位 1,480 519,263 1,442,967

前提: UniDicの方針

UniDicは、登録見出しの単位が特徴的であり、多くの用途においては、そのまま利用するには難があります。

斉一な言語単位(規則に基づく一貫した単位)を持つ当辞書は、一般的な日本語話者から見て基本的だと感じる語句が登録されていないことがあります。例えば、小学校自転車 といった語句は登録されておらず、それぞれ / 学校自転 / という形で表されます。一方で、 赤色右ふくらはぎ といった語句がひとまとまりで登録されています。これは、UniDicでの単位認定の規則によるものです。「最小単位」から、その組み合わせである「短単位」が認定されます。

最小単位とその認定規定

(図: 国立国語研究所ページより引用)

短単位の認定規定

(図: 国立国語研究所ページより引用)

  • 和語・漢語は、2最小単位の1次結合体を1短単位とする
    • 母=親|, |食べ=歩く|, |言=語資=源|, |研=究|, |本=箱作り
  • 外来語は、1最小単位を1短単位とする
    • コールセンター|, |オレンジ

UniDicの詳細は、国語研のページをご覧ください; 「UniDic」国語研短単位自動解析用辞書|用語集

UniDicはもともと、現代日本語書き言葉均衡コーパス(BCCWJ)の形態論情報アノテーション用に開発された辞書です。コーパス中において分割の不統一があると、語彙調査や計量的研究において問題が生じてしまいます。このことから、UniDicでは上記のように斉一な言語単位を規定しています。

しかしこの方針では、日本語話者から見て基本的だと感じる語句が登録されなかったりと、多くの実応用においてそのままの形で使うのは不便であるため、Sudachi辞書では、これらをもとに人手で修正を加えたものを収録しています。

複数の分割単位

SudachiにはA, B, Cという長さの異なる三つの単位があります;

  • A単位: UniDic短単位と”ほぼ”同じ
  • B単位: A単位+接辞、および一部の複合動詞
  • C単位: 複合名詞、固有名詞、慣用句など

基本的には、より短い語句を段階的に結合していきます;

  • 「歴史研究会」
    • A: ✔️ 歴史 / 研究 /
    • A: ❌ 歴史 / 研究会
    • B: 歴史 / 研究会
    • C: 歴史研究会

しかし、例外もあります。以下の例では、B単位を 民主党 とまとめると、別の対象を指し示してしまうため、このような形となっています;

  • 「自由民主党」
    • A: 自由 / 民主 /
    • B: ✔️ 自由 / 民主 /
    • B: ❌ 自由 / 民主党
    • C: 自由民主党

Sudachiにおける各単位は、具体的に、どのような方針で決めているのでしょうか。これが一筋縄ではいかない話なのです。

A単位

A単位は、UniDic短単位とほぼ同じですが、一部の語句では分割をしています。以下に、種別ごとに例を挙げます;

  • 複合動詞のうち、「動詞+動詞」の語構成のもの
UniDic 短単位 Sudachi A単位
砕け散る 砕け / 散る
錆び付く 錆び / 付く
  • 複合名詞のうち、語基が類概念を表し、同類の語が多いもの
UniDic 短単位 Sudachi A単位
赤色 /
鯖鮨 /
賄い係 賄い /
  • 複合名詞のうち、語基を用いた別の表現へ容易に言い換えられるもの
UniDic 短単位 Sudachi A単位
本好き / 好き
子海豚 / 海豚
仮住まい / 住まい
右ふくらはぎ / ふくらはぎ
  • 調理用食材の名称
UniDic 短単位 Sudachi A単位
むきエビ むき / エビ
焼き栗 焼き /
ゆで卵 ゆで /

B単位

前述したように、UniDicの短単位は、一般的な日本語話者が想定するものと異なる場合があり、実用において不便な場合が多々あります。そのため、「短単位から漏れる熟語」を認定するために、B単位が設けられました。方針として「熟語」や「基本的な語句」では曖昧なため、これを「A単位+接辞」および「一部の複合動詞」としています。

例えば、以下の語句は、UniDic短単位としては存在しません。これらをSudachi辞書では収録しています。

  • 小学校 (UniDic短単位では / 学校
  • 自転車 (UniDic短単位では 自転 /
  • 新幹線 (UniDic短単位では 新幹 /
  • 太平洋 (UniDic短単位では 太平 /
  • 法隆寺 (UniDic短単位では 法隆 /

これが悩みの種となります。「B単位を含むさらに長い複合語」を分割する際には、その分割位置に曖昧性の生じる事態が起こりえます。

分割情報のアノテーション規定

基本方針として、複合語にはA単位の組み合わせによる分割情報を付与し、A単位+接辞をB単位、その他の結合をC単位とします。

ここで言う「複合語」は、現状では、以下の原則をもとに判定してます;

  • 2字熟語およびその異表記は、単独語として扱う(複合語としない)
    • 幸福
    • 乗馬
    • 絶対, ぜったい
    • 手製
    • 重箱
  • 外来語については、原語表記が2語以上(スペースを挟んで記述)ものを複合語として扱う
    • テニス / コート
    • サマー / スクール
    • セキュリティー / カード
  • 和製英語については、2語以上の外来語が含まれていれば複合語として扱う
    • アフター / サービス
    • ガソリン / スタンド
  • 混種語(2字熟語およびその異表記以外)については、複合していることが自明であるため、複合語として扱う
    • ハイブリッド /
    • / コップ
    • シフト / 勤務

他方で、この原則には例外もあります。以下のものには、複合語であっても分割情報を付与しません;

  • 最小単位が和語で、それが2つ結合したもの(UniDicと同様)
    • 母親, 靴下, 靴下, 飴玉, あめ玉, 真っ赤, 真赤, 青白い, 甘辛い, 割り引き, 独り言, 作り話, 気持ち, 人使い
  • 慣用句、比喩表現、オノマトペ
    • お気に入り, ごめんなさい, 雀の涙, 土砂降り, へんてこりん, 一匹狼, うなぎ上り
  • 略語、および略語の結合
    • 安保, 安保理, 日教組, パソコン, 冷暖房, 上下動
  • 最小単位が並列関係にある複合語で、結合の順番が固定のもの
    • 年月日, 都道府県, 市町村, 上中下, 松竹梅
  • 自然地形を表す1文字の類概念と結合した固有名称
    • 利根川, 富士山, 英虞湾, 太平洋, 八ヶ岳

少しづつ検討を重ねた上での現状ですが、もちろんこれで終わりというわけではありません。どのようにすれば価値ある言語資源となるか。一つ一つの事例を見て決めていくというのは、時間がかかりますし、主観頼りにもなります。一方、原理原則で網羅するということも、不都合のある事例が出てきて、そう上手くはいきません。

辞書開発者の悩み

ここまで述べてきたように、辞書の開発においては、正解があるわけではない悩みどころが多くあります。

例えば、複数粒度での単位認定の尺度は、「意味」が良いのでしょうか、「語の構成」でしょうか、それとも「使用頻度」でしょうか。 / 学校 / 持ち と分割したい状況、すべき理由はあるでしょうか。 / 学部 ではなく 文学 / でしょうか、では同様に グロバールコミュニケーション学 / とすべきでしょうか?

この記事で述べたことは全容の一部分でしかありません。NEologd由来語句の取り扱いや、表記揺れに対する代表表記の話題、単語コストの話など、言及していないことはまだまだあります。ワークス徳島NLPでは、深い知識と長年の経験を持つ専門家が様々なことを検討し、日々、開発を進めています。関心を持たれた方は、"形態素解析器『Sudachi』のための大規模辞書開発" (坂本+ 2018) などの関連文献もぜひご覧になってみてください。

言語学からの観点もありますが、特に実用上、どうすれば嬉しいでしょうか。どんな辞書があれば、皆さんが開発したり利用しているサービスが、もっと便利になるでしょう?

自然言語処理において、言語資源をこのように吟味して作り上げていくことは、地味かもしれませんが、欠くことのできない大切な要素だと私は強く思います。私自身はソフトウェア側の開発が主で、辞書自体の制作には関与していませんが、そのお仕事を横から眺め、畏敬の念を抱き続けてきました。この気持ちを当記事で共有できたのであれば嬉しいです。手間隙かけたこのSudachi、ぜひ使ってみてください。

また、皆さんから幅広く、上記の論点に限らずともご意見を頂けますと、今後の開発において大変参考になります。開発者や利用者がお話する場も用意しております、ぜひ気軽にご参加ください; Sudachi公式Slack参加リンク

関連文献