4
0

AIに負けるな! mecabでのkeyword生成

Last updated at Posted at 2023-12-13

本記事は、intimatemerger Advent Calendar 2023 14 日目記事です。

言語系の AI が非常に優れています。
そんなご時世ですが、Mecab などで使用される辞書について話していきます。
なぜかというと言語系の AI は、使うのも作るのもコストがかかります。
もちろん、金額に見合った結果を出すなら問題ないので使っていきたいです。

ただし、大量の文章を毎日解析する場合、コストと結果のバランスがちょっと悪いです。
このような状況で、効果的かつ経済的な手段が求められます。今回は、文章中のキーワードに焦点を当てています。
キーワード が何かというと、文章、またはコンテキスト内で重要な単語やフレーズを指します。
これを精度良く辞書に追加していきたいという話です。

辞書について

辞書にはいくつか種類があります。

  1. unidic
  2. neologd
  3. ipadic

2,3 は更新がとまっています。
1 は、2023 年 11 月も更新されているのを確認しました。

どれがいいのか

利用目的によりますが、neologd は最新の更新が行われていませんが、まだ利用できると考えています。
neologd はネットから情報を取得しており、そのおかげである程度の固有名詞が登録されています。

一方で、unidic は使用した感触として、国語辞典のような印象を受けました。これは、固有名詞がやや少ないことが原因かもしれません。
辞書に含まれていない人名や本のタイトルなどがあるため、我々が考えている名詞とは異なる結果が返ってくることがあります。

どちらの辞書も基本的な形態素解析には問題なく使えますが、違いは人名や物事の固有表現に関するものです。微妙な結果を生む文も存在するかもしれません。

個人的に注目したい点として、neologd を使用したときに「米俵」という文があり、その際に「米」が名詞であるにもかかわらず、国を意味すると解釈されたことがあります。
なのでこの辞書を使えば問題ないというのは残念ながらありません。

今回は、unidic を使用していきます。
理由としては、現時点で最新の web 上の言葉を解析して作成されたものであるからです。
また、neologd にくらべて固有表現は少ないですが長らく更新が行われていないので unidic を使います。

ユーザ辞書

neologd も unidic も、辞書としては優れていますが、全ての言葉を網羅しているわけではありません。新しい造語が存在することも考えられるので、それらは都度ユーザー辞書に追加しています。
これにより、unidic でもある程度の固有名詞を補完でき、通常の使用に支障がないようになるでしょう。(ただし、ユーザー辞書の作成は手間がかかりますが…)

登録されていない語の例

闇バイト、頂き女子、経済対策、内閣支持率、...ect

文章から keyword を抽出

文章からキーワードを抽出するには、どのようにすればよいでしょうか。

まず、いきなりキーワードを抽出するのは難しいです。キーワードを明確に把握するためには、ある程度自分が求めるキーワードを明示的に定義することが重要です。

自分が求めるキーワードがそのまま出力される場合は、何も手を加えずに結果を確認すれば十分です。

単純な仕組み

キーワードは多くの場合、名詞であることがあります。Mecab を使用して名詞を抽出してみましょう。

以下は「耳をすませば」の Wikipedia のあらすじ部分から抽出された名詞の一部です。

名詞のみ

読書、中学、3、年、月島、雫、日、父、図書、自分、本、読書、カード、天沢、聖司、名前、こと、
気、こと、自分、中、存在、感、人、思い、夏休み、雫、親友、夕子、相談、学校、ついで、宿直、
高坂、先生、図書、本、本、寄付、天沢、注、2、名前、人物、雫、寄贈、高坂、先生、うえ、
待ちぼうけ、夕子、ため、後、2、校庭、ベンチ、移動、雫、依頼、カントリー、ロード、

これだけでは文脈や内容が十分に理解できません。
1文字のものや、意味が怪しいものがあります。

ついで	名詞,普通名詞,一般,*,*,*,ツイデ,序で,ついで,ツイデ,ついで,ツイデ,和,*,*,*,*,*,*,体,ツイデ,ツイデ,ツイデ,ツイデ,0,C2,*,6695484680970752,24358
うえ	名詞,普通名詞,副詞可能,*,*,*,ウエ,上,うえ,ウエ,うえ,ウエ,和,*,*,*,*,*,*,体,ウエ,ウエ,ウエ,ウエ,"0,2",C4,*,812822594462208,2957
こと	名詞,普通名詞,一般,*,*,*,コト,事,こと,コト,こと,コト,和,コ濁,基本形,*,*,*,B1WS2WB3WB6SjShS,体,コト,コト,コト,コト,2,C3,*,3528350027096576,12836

ここら辺の文字は、辞書の仕様なので諦めるのがいいかもしれません。

辞書をそのまま使用しても、人間が考えるキーワードを正確に取得することは難しい可能性が高いのがわかりました。

表現を辞書に追加していく

私たちが考えたり、日常的に読む文章のキーワードには、一定の法則性があると感じることがあります。経済系のニュースや新しい表現の言葉を考えてみましょう。

経済対策
太陽光発電
私人逮捕
国内最大
研究成果
公開義務

上記の言葉は、ニュースなどで頻繁に見られる表現や最近の造語です。これらの特徴を把握しながら、自身でアルゴリズムを構築してキーワードを生成することを考えていきましょう。

step1: 複合名詞を見つける

名詞が連続している場合、それを一つの言葉として認識すると考えます。
大雑把に連続しているものは、複合名詞としてまとめます。

コンピュータープログラム
学生寮
自動車産業
太陽光発電
健康診断
環境保護団体
未来予測
音楽コンサート
国際協力
冷蔵庫

step2: 助詞、動詞、助動詞

本を読む

という一文がある文章を考えたとき、この言葉を品詞分解して考えていきます。

本を読む
本	名詞,普通名詞,一般,*,*,*,ホン,本,本,ホン,本,ホン,漢,ホ濁,基本形,*,*,*,*,体,ホン,ホン,ホン,ホン,1,C3,*,9584176605045248,34867
を	助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*,*,*,格助,ヲ,ヲ,ヲ,ヲ,*,"動詞%F2@0,名詞%F1,形容詞%F2@-1",*,11381878116459008,41407
読む	動詞,一般,*,*,五段-マ行,終止形-一般,ヨム,読む,読む,ヨム,読む,ヨム,和,*,*,*,*,*,*,用,ヨム,ヨム,ヨム,ヨム,1,C1,*,10853287968514731,39484

「本」だけを抽出した場合、ユーザーが具体的にどのように考えているのかは不明です。そのため、「読む」という文も含めて名詞と一緒にキーワードとしてまとめた方が良いでしょう。

助動詞に関しては、個人の好みによりますが、入れるかどうかは微妙です。
必要に応じて加えることも考えましょう。

step3: 重複しているワードの対処

言葉をある程度まとめると、重複している言葉が見受けられますが、これは問題ないと考えています。
重複する言葉があるということは、それが重要な言葉である可能性があり、良いキーワードであると言えるからです。

具体的な処理手順としては、以下の2つのステップを経ることを考えています。

  1. 重複率が高いもののみに絞る
  2. 部分一致率が高いものを除外

2 の処理において、例えば誰かの名前の後に「大統領」や「首相」などの役職を表す文字が含まれている場合、そのキーワードを除外します。
これは部分一致率が高いものは、同一の事柄を指している可能性が高いためです。

これにより、不適切な言葉を結果から取り除くこともできます。

不適切な名詞?

文章を解析していると判断に迷う言葉がみられます。
それぞれに対する修正や注意点を以下に示します。

  • 代名詞
    「あれ」「これ」「それ」などは代名詞に分類されますが、これらは文中の他の名詞や物事を指し示しているため、単体では意味がないことが多いです。
  • 数詞
    全ての数字を名詞に登録するのは不要です。
  • 助動詞
    助動詞の使用には条件が必要であり、例えば一つ前の言葉が動詞の場合など、文脈に合った条件を設定する必要があります。機械的に処理する際には、誤った単語に区切られないように慎重に判断することが重要です。
  • ひらがな表現
    ひらがな表現は注意が必要であり、単体で見たときに意味が取りにくい場合があります。意味の範囲が広いため、適切な判断が難しい場合があるので除外しています。
  • 長すぎる表現
    さまざまな品詞がまとまっていると長すぎる表現が生じることがあります。一定の長さ以上は除外することで、解析の効率性を向上させることができます。

結果

「耳をすませば」の Wikipedia をプログラムで処理します。

学校を舞台
アトリエタッセル
聖蹟桜ヶ丘店
杉の宮駅
ニューアーク方式
登場人物
魔女の宅急便
カントリーロード
天沢聖司
集英社
製作委員会
アニメ映画
映画作品
徳間書店
猫の恩返し
金曜ロードSHOW
スタジオジブリ
実写映画

おまけとして、流行りのアニメの Wikipedia も同様に処理してみた結果です。
漫画内で表現されている語が抽出されました。

葬送のフリーレン
フリーレン
シュタルク
アベツカサ
山田鐘人
魔法使い
七崩賢の一人
断頭台のアウラ
アウラの配下
一般攻撃魔法
一級魔法使い
史上初の貫通魔法
魔族を殺す魔法
人を殺す魔法
女神様の魔法
花畑を出す魔法
黒金の翼を操る魔法
大地を操る魔法
水を操る魔法
切る魔法
日本国内
北部高原
勇者一行
魂の眠る地
ゼーリエ
オレオール
パーティー
テレビアニメ
ミニアニメ
金曜ロードショー
金曜深夜
製作委員会
公式サイト
クロスネット局
連動データ放送

作成できた語をユーザ辞書に追加しておけば、同様の表現が用いられている文で名詞として認識されるようになります。

まとめ

さまざまな辞書がありそれらを使用してキーワードを生成するのは良い考えだと思います。
しかし、辞書をそのまま使用しても、多くの人が期待する結果を得ることは難しいでしょう。

ただし、自分たちが必要とするキーワードに近づけることは誰にでも可能です。
新しい言葉や文章には構成する規則があるため、地道に文章を解析し、辞書に追加していくことで、AI にも負けない結果を生み出せると考えています。

残念ながら言語系 AI は、これらの処理を経て学習しているため、AI を使用する方が効率的でしょう。
英語にも強そうですし...。

次回の記事も面白いので是非読んでみてください!

4
0
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
4
0