pkeを使い日本語のキーフレーズ抽出を行う

Pocket

Python Keyphrase extraction (pke) というモジュールがあります。TextRank等著名なキーフレーズ抽出手法をサポートしているPython用パッケージです。

GiNZAの登場により、内部でspacyを使っているソフトウェアが日本語でも使えるようになったケースが増えてきているのですが、pkeも最近の更新で完全に無改造で日本語を扱えるようになりました。

それ以前にpkeを日本語で使うための記事がいくつかあります。

pkeはここのところ頻繁に更新があり、ストップワード以外は無改造で動くようになっていました。ストップワードに関しても先の記事のようなハックをしないで済むようなPRを出したところ、もうちょっと洗練されたコードに置き換わってくれました。ともあれ上記の記事の方法と使い方がちょっと変わってしまったのでここに記録しておきます。サンプルはオージス総研の記事に倣います。

import pke
# 引用元:「東京ディズニーランド」『フリー百科事典 ウィキペディア日本語版』。
# 最終更新 2019年9月29日 (日) 04:02 UTC、URL: https://ja.wikipedia.org
text = "東京ディズニーランド、英称:Tokyo Disneyland、略称:TDL)は、" +\
"千葉県浦安市舞浜にあるディズニーリゾートを形成する日本のディズニーパーク。" +\
"年間来場者数は日本最大の約1,600万人で、世界のテーマパーク・アミューズメントパークの中でも、" +\
"フロリダ州のウォルト・ディズニー・ワールド・リゾートのマジック・キングダム、カリフォルニア州の" +\
"ディズニーランド・リゾートのディズニーランド・パークに次いで世界3位の規模を誇る[1]。オリエンタルランド" +\
"がザ・ウォルト・ディズニー・カンパニーとのライセンス契約のもと運営している[3]。"
extractor = pke.unsupervised.MultipartiteRank()
# language='ja' とする
extractor.load_document(input=text, language='ja', normalization=None)
extractor.candidate_selection(pos={'NOUN', 'PROPN', 'ADJ', 'NUM'})
extractor.candidate_weighting(threshold=0.74, method='average', alpha=1.1)
print(extractor.get_n_best(10))

language=’ja’とした場合、spacyの利用可能なモデルから’ja’で始まる最初のモデルを利用します。したがって、ginzaが入っていればja_ginzaモデルが自動的に利用されます。

By knok

I am a Debian Developer and a board member of Free Software Initiative (FSIJ).