YAKEによるキーワード抽出
2020-05-29
2020-05-29
はじめに
キーワード抽出手法にいくつかありますが、今回はキーワード抽出ライブラリYAKEを用い、日本語の文章からキーワード抽出をやってみました。
YAKEとは
YAKE(Yet Another Keyword Extractor)はRicardo Campos氏らが2018年に発表した論文に基づく開発したキーワード抽出ライブラリで、コーパスに依存しない、そしてトレーニングが必要がないのが特徴である。
YAKEのインストール
pipでライブラリYAKEをインストールします。
```pip install git+https://github.com/LIAAD/yake
```今回は日本語テキストを処理するため、MeCabもインストールします。記事「形態素解析エンジンMeCabのインストール」に記載されている手順でインストールしました。
キーワード抽出を試す
まずは、MeCabを利用していて、テキストデータ「ディープリンクについてまとめ」を単語ごとに分割します。次は、YAKEのライブラリによるテキストからキーワードを抽出します。
```#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import MeCab
import yake
# read data
with open('test.txt', encoding='utf-8') as f:
read_data = f.read()
# tokenize Japanese text
mecab = MeCab.Tagger("-Owakati")
tokenized_text = mecab.parse(read_data)
# extract keywords
kw_extractor = yake.KeywordExtractor(lan="ja", n=1)
keywords = kw_extractor.extract_keywords(tokenized_text)
for kw in keywords:
print(kw)
```# -*- coding: utf-8 -*-
import MeCab
import yake
# read data
with open('test.txt', encoding='utf-8') as f:
read_data = f.read()
# tokenize Japanese text
mecab = MeCab.Tagger("-Owakati")
tokenized_text = mecab.parse(read_data)
# extract keywords
kw_extractor = yake.KeywordExtractor(lan="ja", n=1)
keywords = kw_extractor.extract_keywords(tokenized_text)
for kw in keywords:
print(kw)
抽出したキーワードは以下の通りです。
```('url', 0.002320153786271216)
('links', 0.003685762193709346)
('app', 0.005643058368326056)
('scheme', 0.005996142319603734)
('アプリ', 0.006393455665725041)
('deep', 0.008170938083057596)
('custom', 0.008545751027168522)
('プリンク', 0.011336053508968328)
('https', 0.01160270663594062)
('メッセ', 0.0126113398222864)
('android', 0.013212048446320701)
('インスト', 0.016575700374031586)
('ドキュメント', 0.016575700374031586)
('associated', 0.01873667619695634)
('com', 0.018959675293406048)
('universal', 0.02072226898540469)
('domains', 0.02072226898540469)
('コンテンツ', 0.021683067224513054)
('your', 0.021726463709040675)
('ios', 0.027548679365893728)
```('links', 0.003685762193709346)
('app', 0.005643058368326056)
('scheme', 0.005996142319603734)
('アプリ', 0.006393455665725041)
('deep', 0.008170938083057596)
('custom', 0.008545751027168522)
('プリンク', 0.011336053508968328)
('https', 0.01160270663594062)
('メッセ', 0.0126113398222864)
('android', 0.013212048446320701)
('インスト', 0.016575700374031586)
('ドキュメント', 0.016575700374031586)
('associated', 0.01873667619695634)
('com', 0.018959675293406048)
('universal', 0.02072226898540469)
('domains', 0.02072226898540469)
('コンテンツ', 0.021683067224513054)
('your', 0.021726463709040675)
('ios', 0.027548679365893728)
max_ngram_sizeを3に設定して、以下のようにキーフレーズも抽出してみた。
```kw_extractor = yake.KeywordExtractor(lan="ja", n=3)
``````
('custom url scheme', 6.555965476389992e-06)
('app universal links', 6.235228661183674e-05)
('url scheme for', 6.444819194052352e-05)
('associated domains entitlement', 7.148609380740038e-05)
('your app universal', 8.17472954076588e-05)
('your content android', 0.00010585798328035927)
('scheme for your', 0.00010994423569727402)
('linking app links', 0.00011851042959014254)
('url scheme', 0.00015314887852696708)
('for your app', 0.00016585612441061718)
('allowing apps and', 0.00016607118404264083)
('apps and websites', 0.00017485621062092522)
('custom url', 0.0002182924627349626)
('deep links', 0.00036178585738182514)
('universal links', 0.0006883425284256791)
('app links', 0.0007498859365026304)
('associated domains', 0.0007777407706651796)
('url types', 0.0011702030547731078)
('app universal', 0.0018744987459007301)
('domains entitlement', 0.0019016748357532994)
``` ('app universal links', 6.235228661183674e-05)
('url scheme for', 6.444819194052352e-05)
('associated domains entitlement', 7.148609380740038e-05)
('your app universal', 8.17472954076588e-05)
('your content android', 0.00010585798328035927)
('scheme for your', 0.00010994423569727402)
('linking app links', 0.00011851042959014254)
('url scheme', 0.00015314887852696708)
('for your app', 0.00016585612441061718)
('allowing apps and', 0.00016607118404264083)
('apps and websites', 0.00017485621062092522)
('custom url', 0.0002182924627349626)
('deep links', 0.00036178585738182514)
('universal links', 0.0006883425284256791)
('app links', 0.0007498859365026304)
('associated domains', 0.0007777407706651796)
('url types', 0.0011702030547731078)
('app universal', 0.0018744987459007301)
('domains entitlement', 0.0019016748357532994)