LR情報の蓄積と利用【和布蕪(日本語)による用語抽出を例に】

モジュールをimport

In [1]:
import termextract.mecab
import termextract.core

from pprint import pprint # このサンプルでの処理結果の整形表示のため

LRの情報を蓄積(事前処理)

In [2]:
import dbm
db = dbm.open("termextrat", "n")
input_files = ["mecab_out_sample.txt", "mecab_out_sample2.txt", "mecab_out_sample3.txt"]
for file in input_files:
    f = open(file, "r", encoding="utf-8")
    tagged_text = f.read()
    f.close
    frequency = termextract.mecab.cmp_noun_dict(tagged_text)
    termextract.core.store_lr(frequency, dbm=db)
db.close
Out[2]:
<bound method _Database.close of <dbm.dumb._Database object at 0x000001EAF40674E0>>

専門用語抽出対象の文書を読み込み

In [3]:
f = open("mecab_out_sample.txt", "r", encoding="utf-8")
tagged_text = f.read()
f.close
frequency = termextract.mecab.cmp_noun_dict(tagged_text)
pprint(frequency)

蓄積したLR情報からLRを呼び出し

In [4]:
db = dbm.open("termextract", "r")
LR = termextract.core.score_lr(frequency,
        ignore_words=termextract.mecab.IGNORE_WORDS,
         lr_mode=1, average_rate=1, dbm=db
     )
db.close
pprint(LR)

FrequencyとLRを組み合わせFLRの重要度を出す

In [5]:
term_imp = termextract.core.term_importance(frequency, LR)
pprint(term_imp)

collectionsを使って重要度が高い順に表示

膠着言語の場合は、termextract.core.modify_agglutinative_lang()で整形をする

In [6]:
import collections
data_collection = collections.Counter(term_imp)
for cmp_noun, value in data_collection.most_common():
    print(termextract.core.modify_agglutinative_lang(cmp_noun), value, sep="\t")
In [ ]: