今回は、このリストを新語としてjanomeのユーザー辞書に登録します。 下記の記事を参考にしました。
Janomeドキュメント:ユーザー定義辞書を使う
http://mocobeta.github.io/janome/#id7
コード7区:ツイートからユーザ辞書(MeCab や Janome 用)をpython で作ってみる
http://ailaby.com/tweet_dict/
・インポートとデータの確認
from janome.tokenizer import Tokenizer import pandas as pd words_judge
複合語候補 | 回数 | 単語 | 判定 | |
---|---|---|---|---|
0 | 再生_可能_エネルギー | 171 | 再生可能エネルギー | True |
1 | する_こと | 154 | すること | False |
2 | 。_\r\r\r\r\n | 135 | ||
3 | し_た | 128 | し | |
4 | 的_な | 118 | 的 | |
5 | について_は | 91 | について | |
6 | 事業_者 | 78 | 事業者 | True |
7 | する_ため | 72 | するため | False |
8 | 脱_炭素_化 | 65 | 脱炭素化 | True |
9 | し_て | 65 | し |
・データ抽出
words_dic=words_judge[(words_judge["判定"]==True) & (words_judge["回数"] >= 6)] words_dic
判定が"True"、回数が6以上のものを抽出。
複合語候補 | 回数 | 単語 | 判定 | |
---|---|---|---|---|
0 | 再生_可能_エネルギー | 171 | 再生可能エネルギー | True |
6 | 事業_者 | 78 | 事業者 | True |
8 | 脱_炭素_化 | 65 | 脱炭素化 | True |
14 | 技術_開発 | 56 | 技術開発 | True |
15 | 可能_性 | 55 | 可能性 | True |
27 | 安定_供給 | 38 | 安定供給 | True |
このデータの"単語"列をユーザー辞書に登録します。janomeのユーザー辞書はMeCab 辞書と同じです。ユーザー辞書のフォーマットについては下記を参照ください。
MeCab 単語の追加方法
http://taku910.github.io/mecab/dic.html
ユーザー辞書はカンマ区切りCSVファイルで、「表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音」という形式です。
今回は、左文脈ID、右文脈IDを-1、コストを1000に、品詞、品詞細分類1を名詞、一般名詞に固定し、そのほかは"*"にします。
・ユーザー辞書のフォーマットを作る
words_dic["paramater"]="-1,-1,1000,名詞,一般,*,*,*,*,%s,*,*" words_dic=pd.concat( [words_dic['単語'],words_dic['paramater'] .str.split(',', expand=True)], axis=1) words_dic[9]=words_dic["単語"] words_dic
フォーマットの表層形以外をカンマ区切りでparamater列に格納した後、カンマで列を分割、原形(列名"9")に"単語"列をコピーしています。
単語 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 再生可能エネルギー | -1 | -1 | 1000 | 名詞 | 一般 | * | * | * | * | 再生可能エネルギー | * | * |
6 | 事業者 | -1 | -1 | 1000 | 名詞 | 一般 | * | * | * | * | 事業者 | * | * |
8 | 脱炭素化 | -1 | -1 | 1000 | 名詞 | 一般 | * | * | * | * | 脱炭素化 | * | * |
14 | 技術開発 | -1 | -1 | 1000 | 名詞 | 一般 | * | * | * | * | 技術開発 | * | * |
15 | 可能性 | -1 | -1 | 1000 | 名詞 | 一般 | * | * | * | * | 可能性 | * | * |
これでユーザー辞書のフォーマットが完成。
・ユーザー辞書をCSVで保存
words_dic.to_csv("energywords_dic.csv", sep=",",index=False,header=False,encoding='cp932')
できたユーザー辞書をCSVで保存します。この時、列名、インデックスともにFalseとし、保存しないようにます。
・ユーザー辞書を使う
janomeでユーザー辞書を使ってみます。エネルギー基本計画より、下記の文章を分かち書きします。
電源構成は、特定の電源や燃料源への依存度が過度に高まらないようにしつつ、低廉で安定的なベースロード電源を国際的にも遜色のない水準で確保すること、安定供給に必要な予備力、調整力を堅持すること、環境への適合を図ることが重要であり、バランスのとれた電源構成の実現に注力していく必要がある。一方、東京電力福島第一原子力発電所事故後、電力需要に変化が見られるようになっている。こうした需要動向の変化を踏まえつつ、節電や、空調エネルギーのピークカットなどピーク対策の取組を進めることで電力の負荷平準化を図り、供給構造の効率化を進めていくことが必要である。
text="電源構成は、特定の電源や燃料源への依存度が過度に高まらないようにしつつ、低廉で安定的なベースロード電源を国際的にも遜色のない水準で確保すること、安定供給に必要な予備力、調整力を堅持すること、環境への適合を図ることが重要であり、バランスのとれた電源構成の実現に注力していく必要がある。一方、東京電力福島第一原子力発電所事故後、電力需要に変化が見られるようになっている。こうした需要動向の変化を踏まえつつ、節電や、空調エネルギーのピークカットなどピーク対策の取組を進めることで電力の負荷平準化を図り、供給構造の効率化を進めていくことが必要である。"
・ユーザー辞書なし
tokenizer = Tokenizer() words=[] tokens = tokenizer.tokenize(text) for word in tokens: words.append(word.surface) print(" ".join(words))
電源 構成 は 、 特定 の 電源 や 燃料 源 へ の 依存 度 が 過度 に 高まら ない よう に し つつ 、 低廉 で 安定 的 な ベース ロード 電源 を 国際 的 に も 遜色 の ない 水準 で 確保 する こと 、 安定 供給 に 必要 な 予備 力 、 調整 力 を 堅持 する こと 、 環境 へ の 適合 を 図る こと が 重要 で あり 、 バランス の とれ た 電源 構成 の 実現 に 注力 し て いく 必要 が ある 。 一方 、 東京電力 福島 第 一 原子力 発電 所 事故 後 、 電力 需要 に 変化 が 見 られる よう に なっ て いる 。 こうした 需要 動向 の 変化 を 踏まえ つつ 、 節電 や 、 空調 エネルギー の ピーク カット など ピーク 対策 の 取組 を 進める こと で 電力 の 負荷 平準 化 を 図り 、 供給 構造 の 効率 化 を 進め て いく こと が 必要 で ある 。
・ユーザー辞書あり
tokenizer = Tokenizer('energywords_dic.csv', udic_enc='cp932') words=[] tokens = tokenizer.tokenize(text) for word in tokens: words.append(word.surface) print(" ".join(words))
電源構成 は 、 特定 の 電源 や 燃料 源 へ の 依存度 が 過度 に 高まら ない よう に し つつ 、 低廉 で 安定的 な ベースロード電源 を 国際的 に も 遜色 の ない 水準 で 確保 する こと 、 安定供給 に 必要 な 予備 力 、 調整力 を 堅持 する こと 、 環境 へ の 適合 を 図る こと が 重要 で あり 、 バランス の とれ た 電源構成 の 実現 に 注力 し て いく 必要 が ある 。 一方 、 東京電力 福島 第 一 原子力発電所 事故 後 、 電力 需要 に 変化 が 見 られる よう に なっ て いる 。 こうした 需要動向 の 変化 を 踏まえ つつ 、 節電 や 、 空調 エネルギー の ピーク カット など ピーク 対策 の 取組 を 進める こと で 電力 の 負荷 平準 化 を 図り 、 供給構造 の 効率化 を 進め て いく こと が 必要 で ある 。
ユーザー辞書の設定は、Tokenizerの初期化時にユーザー辞書のCSVファイル名とエンコードを指定するだけ。
ユーザー辞書ありでは、電源構成、依存度、安定的、ベースロード電源、国際的、安定供給、調整力、原子力発電所、需要動向、供給構造、効率化が一つの単語となりました。
一方、予備力、電力需要、ピークカットは「予備 力」「電力 需要」「ピーク カット」と分かれたままです。これはエネルギー基本計画で6回以上出現したものを複合語候補として抽出したためです。複数の資料から辞書に載っていない組み合わせを抽出するようにすれば、新語の検出精度が上がりそうです。
参考:
資源エネルギー庁:第5次エネルギー基本計画
http://www.enecho.meti.go.jp/category/others/basic_plan/pdf/180703.pdf
Janomeドキュメント:ユーザー定義辞書を使う
http://mocobeta.github.io/janome/#id7
MeCab 単語の追加方法
http://taku910.github.io/mecab/dic.html
コード7区:gensim の Phrases の使い方。頻出する単語ペアを検出-python
http://ailaby.com/phrases/
コード7区:ツイートからユーザ辞書(MeCab や Janome 用)をpython で作ってみる http://ailaby.com/tweet_dict/
Janomeで形態素解析をやってみる。
http://eneprog.blogspot.com/2018/06/janomepython.html
janome Analayzerで複合語(複合名詞)を考慮して形態素解析を行う。
http://eneprog.blogspot.com/2018/07/janome-analayzerpython.html
gensim Phrasesで新語・複合語を探す(python、自然言語処理、機械学習)
https://eneprog.blogspot.com/2018/07/gensim-phrasespython.html
エネルギー基本計画から新語・複合語を探す。その1
https://eneprog.blogspot.com/2018/07/1-pythongensimphrasesjanome.html
エネルギー基本計画から新語・複合語を探す。その2 複合語を判定する(python,自然言語処理,janome)
https://eneprog.blogspot.com/2018/08/2-pythonjanome.html
0 件のコメント:
コメントを投稿