# ひめのり：辞書生成機能を備えたワードクラウド作成システム

涉谷 泰蔵 ${ }^{1,2}$ 稲吉 希理 ${ }^{1}$ 西田 健太郎 ${ }^{1}$ 田中朋 1,2
1 日本電気株式会社 2 産業技術総合研究所
\{taizo, kiri.i, ken-nishida, tomotanaka\}@nec.com

## 概要

専門用語辞書生成機能を持つワードクラウド作成システム「ひめのり」を開発した. システムは スマートフォン上でも動作可能な Web インター フェースを持ち，様々な分野の専門家による効率的 な形態素解析辞書の生成を可能にする. 1940 年代 の応用物理学会誌のデータを用いた専門用語抽出実験から，システムによる作業効率の加速効果は手作業に比べ最大で 3 倍程度あることが分かった. 今後 ひめのりが得意なデータセットの特徵を明らかにす るとともに，辞書以外の言語資源の整備機能も追加 していく.

## 1 はじめに

膨大なテキストデータを概観する手法として， ワードクラウドが知られている。 ワードクラウドは 図 1 に示すように文書中に含まれる多数のトーク ン1)を並べた画像であり，重要なトークンほど大き く表示される. ワードクラウドの作成は，トークン リストの抽出とトークン重要度の決定という 2 つの 作業から成り, 素朴には形態素解析器による文書の トークン化とその頻度集計で実現される。高品質な ワードクラウド生成には，トークンの分割単位や重要度に分析者の視点を反映させる必要がある. 例え ば「化合物 半 導体」という短単位のトークンで構成された複合語をどこまで接続するかや，「情報」や 「システム」といったトークンをワードクラウドに 含めるかといった判断は分析者や分野に依存する.

我々は，複合語リストの抽出を分かち書きテキス トにおけるトークン接続（チャンキング）タスクと 捉え, MeCab [1] 用の複合語辞書生成機能を備えた ワードクラウド作成システムを開発している。この システムはスマートフォンでも操作可能なシンプル なインターフェースを特徴とする Web アプリケー

1）何らかの手段で文章を短い単位に分割したときの一つ一つ の言葉のまとまりのこと.
ションであり，トークン同士を接続する糊という意味を込めて「ひめのり」2)と名付けた。ひめのりはテ キスト中に隣接して現れるトークンペアの接続判断 をユーザに迫り，複合語辞書を効率的に生成する。 また，頻出する低重要度トークンを非表示語（ス トップワード）リストに追加するための画面も備え ている。本稿では，ひめのりを紹介するとともに， そのトークン接続タスクの加速効果を実験で明らか にする。また，形態素解析辞書以外の言語資源生成 ツールとしての可能性についても議論する。

図 1 ワードクラウドの例. 2008-2021 年の『自然言語処理』掲載論文のタイトルから作成.

## 2 関連研究

複合語リストの自動抽出に関しては，頻度 [2] や ルール [3] をべースにしたものから BERTを利用し たもの [4] まで様々な研究があり，これらの手法に 分析者の視点を反映させるには，テキストマイニン グ向けのツール [5] や，種々のスパンアノテーショ ンツール [6-10] 等を利用できる. もちろん長単位 の分割に対応した形態素解析器 [11,12] や辞書 [13] も重要な選択肢である。トークン重要度の決定に関 しても様々な手法 $[2,14]$ が提案されている. これら を統合したワードクラウド作成システムは筆者ら の知る限りでは存在しないが，例えばユーザーロー カル社のサービス [15] は複合語リストとストップ ワードリストの入力に対応し，トークン重要度は TF-IDF [16] で決定している.

2）姫糊（ひめのり）は米を原料とした糊のこと。

## 3 システムの詳細

図 2 ひめのりの全体像.

ひめのりは Python と JavaScript で書かれた web アプリケーションであり，非同期処理を利用して 軽快な動作を実現している。ひめのりの全体像を 図 2 に示す.クライアント側には JavaScript ライ ブラリである React [17] を採用し，サーバー側は Python フレームワークである FastAPI [18] を利用し ている.テキストのトークン分割には $\mathrm{MeCab} を ，$ データベースには SQLite [19]を，ワードクラウド の生成には Andreas Mueller 氏の Python ライブラリ WordCloud [20] と Google Noto Fonts [21]をそれぞれ 採用している. 辞書生成の基本的な流れは，分析す るテキストのアップロード，MeCabによるトーク ン分割，トークンおよびトークンペアの出現頻度集計，トークンペアに対するユーザの判断で構成され る.これらを組み合わせることでトークンペアの チャンキングを繰り返し, MeCab 向けのユーザ辞書 を更新し，最終的に複合語辞書を得る。また，ユー ザはストップワードリストを修正することでワード クラウドの見栄えを整えることができる.

ひめのりの機能の肝となるトークンペアに関す る繰り返し処理（周回）というコンセプトについて 図3を用いて説明する. 最初の周回は，文章ごとに 分割された入力テキストデータを MeCabによって トークンに分割し，単一トークンおよびトークン ペアの出現頻度を集計することで始まる。この時, トークンの頻度情報からワードクラウドも作成す る. 次に，頻度順にソートされたトークンペアごと に，接続するかどうかの判断をユーザに促す. 判断画面の例を図 4 に示す. 画面には単一トークンと トークンペアの出現頻度，およびペアを含む文章一覧が表示され，ユーザはこれを参考にペアを辞書・仮辞書・非辞書のどれかに分類する。例えば辞書に 分類されるのは「電子顕微鏡」のような複合語と して成立するぺアである．仮辞書に分類されるのは

図 3 ひめのりによる複合語抽出の流れ.

図 4 ユーザ判断画面.

3 トークン以上からなる複合語の一部である「高温超」(高温超伝導の一部) のような，そのままで は意味を持たないが，より長単位では意味を持ちそ うだと判断されたぺアである. 仮辞書に登録された トークンは，次周のトークンペア集計では繋がった 状態で出てくるため, 次周の判断によってはさらに 長いトークンとなっていく. こういった意味を持た ないトークンペアをユーザ辞書に登録せずに仮辞書に登録することで，ユーザ辞書の無意味な肥大化 を防いでいる。非辞書に入るのは「に よる」のよ うな複合語として成立しないぺアである。一度非辞書に登録されたトークンペアは，次周以降は頻度集計からは除かれる。分類は画面上の該当ボタンのク リックで実行できるが，キーボードの矢印キーでも
実行できる，必要なトークンペアについてのユーザ 判断が終わったら3)，辞書と仮辞書に含まれたト一 クンペアを見出し語とした MeCab のユーザ辞書を 作成する。この際, 品詞は全て名詞とし, 生起コス トは MeCab に分割されないようトークンの文字数 と周回数に基づいて決定される。このユーザ辞書を 利用してテキストを再び分かち書きし，トークンペ アの頻度集計とワードクラウドの生成を行う．新し いユーザ辞書により生成されたワードクラウドは，図 5 に示す画面で直前の周回のワードクラウドと比較され，次周を実行するかの判断をユーザに促す. ここまでの一連の処理が 1 周目に該当する. 2 周目

## 単語と出現頻度

図 5 周回の終了画面.

は，直前の周回で生成されたトークンペアへの判断 をユーザに促すところから始まり，更新されたユー ザ辞書でワードクラウドが生成されて終わる. 図 3 では 2 周目で「高温超伝導」という複合語が辞書に 登録されたことが分かる. この処理を繰り返すこと でトークンペアは徐々に長くなり，最終的にはユー ザが所望する複合語のリストを得ることができる.

ストップワードリストの編集には図 5 に似た別の 画面が用意されている。ユーザはトークンリスト中 のトークンをクリックすることで，動的にストップ ワードリストを変更し，ワードクラウドの変化を確認できる.

## 4 実験

システムの効果を評価するために，ひめのりを利用した場合としない場合それぞれについて 10 分間 のチャンキング作業を設定し，2 分ごとに作業のス


表 1 BIO タグを用いた長単位チャンキングの例。 Token 化合物 半導体超 格子 の無秩序化とその応用

コアを算出した. 対象文書として J-Stage の API で 取得した応用物理学会誌の 1940-1942 年の論文タイ トル 409 件を利用した. このデータセットは古い専門用語が使われており, 特に複合語辞書生成の重要性が大きいと判断したため選ばれた. チャンキング 作業は MeCab と IPADIC 辞書が生成した分かち書き テキスト中のトークンを接続するものとした. 正解 データは，分野固有の専門用語を可能な限り長単位 で接続することを基本方針とし，一人の材料科学者 が用意した．スコア計算には CONLL2003 の固有表現抽出タスク [22] の BIO タグを参考に，適合率，再現率，F1 值を下記のように定義した：

$
\begin{aligned}
\text { 適合率 }(\text { Precision }) & =\frac{\text { 正解との一致タグ数 }}{\text { ユーザの BI タグ数 }}, \\
\text { 再現率 }(\text { Recall }) & =\frac{\text { 正解との一致タグ数 }}{\text { 正解の BI タグ数 }}, \\
\text { F1 値 } & =\frac{2 \times \text { 適合率 } \times \text { 再現率 }}{\text { 適合率 }+ \text { 再現率 }} .
\end{aligned}
$

タグ付けの例を表 1 に示す. この場合，ユーザ入力の適合率，再現率， $\mathrm{F} 1$ 值はそれぞれ $0.8,0.57,0.67$ となる。ひめのりを使用する場合（w/ Himenori）は 2 分ごとにひめのりの周回作業を終了し, 各周回の ユーザ辞書によって分かち書かれた結果を $\mathrm{BIO}$ タ グに変換した ${ }^{4}$ ．ひめのりを使用しない場合（w/o Himenori）は，図6 に示すようにアンダースコアを 分かち書き文字としたデータを用意し，テキストエ ディタを用いた手作業による区切り文字の除去を タスクとした. この際も 2 分ごとに作業を保存し,結果を BIO タグに変換した. 実験は 8 人の材料系研究従事者に対して行った. 被験者はチャンキン グ作業を同じデータセットに対し w/ Himenori, w/o Himenori でそれぞれ 10 分間行った. 作業を行う順番による影響を確認するため，被験者を 4 人ずつ 2 つの群に分けた. 1 つの群は先にツールを利用し (Himenori 1st)，もう一つの群は先にテキストエディ タで作業を行った（Himenori 2nd）。

## 5 結果と考察

作業者群ごとの平均 $\mathrm{F} 1$ 値の推移を図 7 に示す.作業の順番にかかわらず，全ての時間で w/ Himenori

4）初期トークンが分かたれた文章はスコアの計算に含めな かったが，そのような文章は全体の 5 \%程度だった。

図 6 テキストエディタを用いた手動チャンキングタス ク. トークンを区切るアンダースコアを手動で削除する。

図 $7 \mathrm{~F} 1$ 値の推移. 各点は 4 人の作業者の平均値を示す.

の F1 值が w/o Himenori の F1 值を上回っているこ とが分かる. またそれぞれの群において, 後に作業 した結果の F1 值が高く, 先の作業でデータセット の特徵を掴んだことで, 後の作業の処理速度が向上 したと思われる. しかしながらその影響は極わずか であり，専門用語抽出タスクはひめのりによって加速されたと言える。また，w/o Himenori のカーブが 線形なのに対し, w/ Himenori は w/o Himenori より も高い值をとっているが 4 分を過ぎた頃には緩や かな傾きになる. 次に, 図 8 に F1 值の内訳である

図 8 適合率 (Precision) と再現率（Recall）の推移. 各点 は 8 人の作業者の平均値を示す.

適合率と再現率の平均値の推移を示す. 作業の順序 による差は極わずかであったため，2つの作業者群 をまとめた 8 人の結果の平均値を用いた. 適合率 は w/o Himenori は時間によらず高い值を維持するの に対し，w/ Himenori は最初に低い值をとり 4 分以降で一定値となる。この違いが生まれるのは，w/o Himenori では同じ判断を下せる限り時間経過によっ て適合率が変化しないのに対し，w/ Himenori では 始めの周回で仮辞書に追加されたトークンペアに短単位で BIO タグが貼られ適合率が低く出るからであ る.これら仮辞書に登録されたトークンペアは，そ の後の周回でより長単位の BIO タグが貼られるた め，最終的には適合率は上昇する。再現率は，w/o Himenori がゼロ点から線形に上昇するのに対し，w/ Himenori はゼロ点から 2 分までの傾きが大きく, 4 分を過ぎた時点で w/o Himenori の傾きと一致する. w/o Himenori の線形性は単純作業の繰り返しとして 説明できるが，w/ Himenori の傾きの変化は頻出する トークンペアの一括処理による効果が 4 分頃までで なくなることを示唆している．今回設定した実験時間の範囲内では，w/ Himenori の 2 分と w/o Himenori の 6 分の F1 值がほぼ同一であり加速効果は最大で 3 倍程度とも言えるが，より長時間の作業では $\mathrm{F} 1$ 值 が逆転し得る.これはひめのりに有利な処理時間範囲があることを示唆しており，データセットの特徴 とも相関があると考えられる．今後，頻出するトー クンペアの出現頻度の分布などから，ひめのりの得意なデータセットの特徴を示していきたい.

この実験は，LOC や PER 等の分類はしていない ものの，ひめのりの固有表現アノテーションツー ルとしての可能性にも注目して設定された. w/o Himenori の作業はスパンアノテーションと同種の 作業であり，ひめのりによる作業の加速効果が認め られた.今後は辞書生成だけでなく固有表現アノ テーションツールとしての機能も追加し，他のツー ル [6-10]との比較も行いたい.

## 6 おわりに

辞書生成機能を備えたワードクラウド作成器「ひ めのり」を開発し，複合語抽出の時間対効果を実験的に明らかにした. ひめのりを使うことで, 様々な 分野の専門家が自然言語処理の細部を意識すること なく効率的に形態素解析辞書を生成できる。今後は ひめのりと相性の良いデータセットの特徴を明らか にするとともに，固有表現アノテーションツールと しての可能性も探る.

## 謝辞

本論文をまとめるにあたり, 日本電気株式会社の 石川開氏には, 実験の設定や評価について有益な助言をいただきました.

## 参考文献

[1] 工藤拓. MeCab: Yet another part-of-speech and morphological analyzer. https://taku910.github.io/mecab/.

[2] 中川裕志, 湯本紘彰, 森辰則. 出現頻度と連接頻度に 基づく専門用語抽出. 自然言語処理, Vol. 10, No. 1 , pp. 251-258, 2003.

[3] 橋本泰一, 藤井敦. 特許文書のための形態素解析辞書 の構築. 言語処理学会 第 18 回年次大会, 2012.

[4] 五井野㙇也, 濱上知樹. Bertを用いた医療文書からの 固有表現抽出. 計測自動制御学会第 48 回知能シス テムシンポジウム, 2021.

[5] 高間康史, 阿部美里. テキストデータマイニング統合環境を利用した看護記録からの専門用語辞書作成支援ツールの提案. 第 27 回人工知能学会全国大会, 2013.

[6] Pontus Stenetorp, Sampo Pyysalo, Goran Topić, Tomoko Ohta, Sophia Ananiadou, and Jun'ichi Tsujii. brat: a webbased tool for NLP-assisted text annotation. In Proceedings of the Demonstrations at the 13th Conference of the European Chapter of the Association for Computational Linguistics, pp. 102-107, 2012.

[7] Jie Yang, Yue Zhang, Linwei Li, and Xingxuan Li. YEDDA: A lightweight collaborative text span annotation tool. In Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics, pp. 31-36, 2018.

[8] 山村崇, 嶋田和孝, 吉川和, 岩倉友哉. Tatara: 支援機能を持ったアノテーションツールの構築. 言語処理学会第 25 回年次大会, 2019.

[9] Prodigy $\cdot$ An annotation tool for AI, Machine Learning \& NLP. https://prodi.gy/.

[10] doccano: Open source annotation tool for machine learning practitioners. https://github.com/doccano/ doccano.

[11] 小澤俊介, 内元清貴, 伝康晴. Bccwj 亿基づく長単位解析ツール comainu. 言語処理学会 第 20 回年次大会, 2014 .

[12] Sudachi: A Japanese Tokenizer for Business. https:// github.com/WorksApplications/Sudachi.

[13] 佐藤敏紀, 橋本泰一, 奥村学ほか. 単語分かち書き 用辞書生成システム NEologd の運用-文書分類を例 にして. 情報処理学会研究報告 自然言語処理 (NL), Vol. 2016, No. 15, pp. 1-14, 2016.

[14] Hakan Altınçay and Zafer Erenel. Analytical evaluation of term weighting schemes for text categorization. Pattern Recognition Letters, Vol. 31, No. 11, pp. 1310-1323, 2010.

[15] AI テキストマイニング by ユーザーローカル. https://textmining.userlocal.jp/.

[16] Karen Sparck Jones. A statistical interpretation of term specificity and its application in retrieval. Journal of doc- umentation, Vol. 28, No. 1, pp. 11-21, 1972.

[17] React A JavaScript library for building user interfaces. https://reactjs.org/.

[18] FastAPI framework, high performance, easy to learn, fast to code, ready for production. https://fastapi. tiangolo.com/.

[19] https://www.sqlite.org/.

[20] Andreas Mueller. WordCloud for Python. https:// amueller.github.io/word_cloud/.

[21] Noto Sans Japanese - Google Fonts. https://fonts. google.com/noto/specimen/Noto+Sans+JP.

[22] Erik F. Tjong Kim Sang and Fien De Meulder. Introduction to the CoNLL-2003 Shared Task: Language-Independent Named Entity Recognition. In Proceedings of the Seventh Conference on Natural Language Learning at HLTNAACL 2003, pp. 142-147, 2003.
 涉谷 泰蔵 ${ }^{1,2}$ 稲吉 希理 ${ }^{1}$ 西田 健太郎 ${ }^{1}$ 田中朋 1,2 1 日本電気株式会社 2 産業技術総合研究所 \{taizo, kiri.i, ken-nishida, tomotanaka\}@nec.com  