2021-04-15に更新

KeyBERTでキーフレーズ抽出を試してみる

最近キーフレーズ抽出に興味がありいろいろと調べていたら、BERT版のキーフレーズ抽出パッケージがあったので試してみた。ちなみにキーフレーズ抽出とは、「文章からその主題を良く表現している句を抽出する技術」のこと。
環境は、Docker for Mac を想定。

環境設定

Docker for Macのメモリ制限解放

DecktopにあるPreference -> Advance でMemoryの上限を調整する。KeyBERTをインストールするとPytorchをインストールしようとするが、Dockerのデフォルト設定のままだとメモリ不足でインストールに失敗する。なので、設定を変更してメモリ制限を解除する。今回は12Gに設定した。

KeyBERTのインストール

pip install keybert

MeCabのインストール

KeyBERTは日本語の分かち書きに対応していないため、MeCabを利用する。

pip install mecab-python3
pip install unidic-lite

コード

今回は、Wikipediaのディズニーランドの記事を使ってみる。

from keybert import KeyBERT
import MeCab

doc1 = """
東京ディズニーランド(とうきょうディズニーランド、英称:Tokyo Disneyland、略称:TDL)は、
千葉県浦安市舞浜にあるディズニーリゾートを形成する日本のディズニーパーク。
年間来場者数は日本最大の約1,800万人で、世界のテーマパーク・アミューズメントパークの中でも、
フロリダ州のウォルト・ディズニー・ワールド・リゾートのマジック・キングダム、カリフォルニア州の
ディズニーランド・リゾートのディズニーランド・パークに次いで世界3位の規模を誇る[1]。
オリエンタルランドがウォルト・ディズニー・カンパニーとのライセンス契約のもと運営している[3]。
"""

# MeCabで分かち書き
words = MeCab.Tagger("-Owakati").parse(doc1)

model = KeyBERT('distilbert-base-nli-mean-tokens')

print(model.extract_keywords(words, top_n = 10, keyphrase_ngram_range=(1, 1)))

結果

キーフレーズとして「ディズニーランド」が上位に上がってくると思いきや、結果は8番目だった。

[('アミューズメント', 0.5486), 
('オリエンタル', 0.534), 
('ライセンス', 0.5144), 
('マジック', 0.4829),
('キングダム', 0.4651), 
('フロリダ', 0.4469),
('カンパニー', 0.44),
('日本', 0.4295), 
('ディズニー', 0.4252), 
('ランド', 0.4068)]

ちょっとだけ追加検証

ちなみに、下記の文章(概要の部分)を追加するとどうなるかというと。。。

doc2 = """
誘致当時の経緯から東京ディズニーシーと共に米国ディズニーグループによる直営ではなく、
日本企業の 株式会社オリエンタルランド が米国ディズニーからのライセンス契約により運営している。
なお、東京ディズニーリゾートで販売されているキャラクターの著作権や版権ビジネスはすべてウォルト・ディズニー・ジャパンが、
アトラクションやショーの企画に関しては、米国ディズニー・パークス・エクスペリエンス・プロダクツおよび米
国ディズニーの子会社であるウォルト・ディズニー・アトラクションズ・ジャパンが担当している。
"""

結果2

「ディズニー」が消えてしまった。「エクスペリエンス」って1回して出てきていないんだけど。。

[('エクスペリエンス', 0.5799), 
('アトラクション', 0.5603), 
('アミューズメント', 0.5486), 
('オリエンタル', 0.534), 
('キャラクター', 0.5154), 
('ライセンス', 0.5144), 
('プロダクツ', 0.494), 
('マジック', 0.4829), 
('ジャパン', 0.4752), 
('キングダム', 0.4651)]
ツイッターでシェア
みんなに共有、忘れないようにメモ

skybee8

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント