最近キーフレーズ抽出に興味がありいろいろと調べていたら、BERT版のキーフレーズ抽出パッケージがあったので試してみた。ちなみにキーフレーズ抽出とは、「文章からその主題を良く表現している句を抽出する技術」のこと。
環境は、Docker for Mac を想定。
DecktopにあるPreference
-> Advance
でMemoryの上限を調整する。KeyBERTをインストールするとPytorchをインストールしようとするが、Dockerのデフォルト設定のままだとメモリ不足でインストールに失敗する。なので、設定を変更してメモリ制限を解除する。今回は12Gに設定した。
pip install keybert
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 = """
誘致当時の経緯から東京ディズニーシーと共に米国ディズニーグループによる直営ではなく、
日本企業の 株式会社オリエンタルランド が米国ディズニーからのライセンス契約により運営している。
なお、東京ディズニーリゾートで販売されているキャラクターの著作権や版権ビジネスはすべてウォルト・ディズニー・ジャパンが、
アトラクションやショーの企画に関しては、米国ディズニー・パークス・エクスペリエンス・プロダクツおよび米
国ディズニーの子会社であるウォルト・ディズニー・アトラクションズ・ジャパンが担当している。
"""
「ディズニー」が消えてしまった。「エクスペリエンス」って1回して出てきていないんだけど。。
[('エクスペリエンス', 0.5799),
('アトラクション', 0.5603),
('アミューズメント', 0.5486),
('オリエンタル', 0.534),
('キャラクター', 0.5154),
('ライセンス', 0.5144),
('プロダクツ', 0.494),
('マジック', 0.4829),
('ジャパン', 0.4752),
('キングダム', 0.4651)]
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント