はじめに
過去の記事(※1)で自然言語処理をする機会が増えてますとお伝えしてました。
いろいろと手を出してて、感情分析(ネガポジ判定ないし極性判定とも)にもチャレンジしてもいたり。。。
この2~3か月くらい、筆者は仕事でデータ収集(BeautifulSoupやSeleniumを使ったWebスクレイピング)と自然言語処理(MeCabを使った形態素解析とgensim使った単語の分散表現と感情分析)をする機会が増えてます。
本稿では、「livedoor NEWSに対して感情分析をする」過程をCode交えて紹介してゆく。
感情分析とは
感情分析とは、とある文章に込めた**想い(感情)**がポジティブかネガティブかを、文章に含まれる単語軍から推定(分類)するタスクです。
東北大学でも関連研究に取り組まれており、資材(日本語評価極性辞書12)も公開されております。
本稿で利用するレポジトリはこちらです。
また、ハンズオンはこちらです。
本稿で紹介すること
- 使った環境
- 感情分析の進め方(ニュース記事を例に)
本稿で紹介しないこと
- BERTの全般
- ニュース記事のスクレイピング
(筆者の過去投稿を参照いただけると。。。)
2022年1月1日の話題のニュース記事を予め取得しCSVファイルに出力して利用します。
まずは、環境の準備
筆者は、NGCカタログイメージを取得し、コンテナ起動しています。
以下、NGCカタログイメージ3の取得コマンドです。
$ docker pull nvcr.io/nvidia/pytorch:20.11-py3
以下、PythonとPythonライブラリ群のVer情報です。
$ python -V
Python 3.6.10 :: Anaconda, Inc.
$ python -m pip --version
pip 20.2.4 from /opt/conda/lib/python3.6/site-packages/pip (python 3.6)
$ pip list | grep -i torch
pytorch-transformers 1.1.0
torch 1.8.0a0+17f8c32
torchtext 0.8.0a0
torchvision 0.8.0a0
$ pip list | grep -i transformers
pytorch-transformers 1.1.0
transformers 3.0.2
$ mecab -v
mecab of 0.996
それでは、ニュース記事の感情分析に挑戦!
筆者は、NGCカタログイメージからコンテナ起動し、Google ChromeからJupyterLabに接続して実行しています。
Codeを順に紹介してゆきます。
1. ハンズオンに倣って、BERTモデルとMeCab辞書で感情分析器をインスタンス化
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("/home/jovyan/bert-base-japanese-sentiment")
tokenizer = AutoTokenizer.from_pretrained("/home/jovyan/bert-base-japanese-whole-word-masking", word_tokenizer_type="mecab", mecab_kwargs={"mecab_option": "-d /home/jovyan/mecab/ipadic -r /dev/null"})
sentiment_analyzer = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
2. ニュース記事のCSVファイルをDataFrameに読込み
import pandas as pd
# CSVファイルからDataFrameを生成
df = pd.read_csv('livedoor_news/livedoor_news_topic_2022-01-01.csv', encoding='utf-8')
df.head(5)
中身はこんな感じ。
url | id | title | summary | |
---|---|---|---|---|
0 | https://news.livedoor.com/topics/detail/214452... | 21445293 | 「うる星やつら」が36年ぶりにTVアニメ化 フジ・ノイタミナ枠で | フジテレビの深夜アニメ枠「ノイタミナ」で放送されるとのこと |
1 | https://news.livedoor.com/topics/detail/214463... | 21446393 | 「コミケ」の献血に長蛇の列で大盛況「オタクの鑑」など感心の声 | 東京都赤十字血液センターはTwitterで長蛇の列の様子を掲載し、感謝 |
2 | https://news.livedoor.com/topics/detail/214474... | 21447477 | 「逃走中」HIKAKINが逃走成功で150万円獲得 視聴者から祝福の声 | 賞金である150万円を獲得することとなり「やった〜!」と歓喜 |
3 | https://news.livedoor.com/topics/detail/214458... | 21445857 | 声優の飯田里穂が一般人との結婚を報告「あたたかく見守っていただけたら」 | ツイッターでは直筆書面にて「一般の方と入籍いたしました」と伝えている |
4 | https://news.livedoor.com/topics/detail/214453... | 21445372 | 餅がのどに詰まったら4分勝負、やるべき3つの対処法 NG行動は? | 人間は窒息すると4分で脳に影響が出るため、その場での対処が重要だという |
3. ニュース記事タイトルを対象に感情分析
result = [sentiment_analyzer(title)[0] for title in df['title'].to_list()]
for x, y in zip(result, df['title'].to_list()):
x.update({'title': y})
4. 感情分析結果(戻り:Dict型)のリストからDataFrameを生成し、ニュース記事のDataFrameと結合
df = pd.merge(df, pd.DataFrame(result), on='title')
df.head(5)
中身はこんな感じ。
url | id | title | summary | label | score | |
---|---|---|---|---|---|---|
0 | https://news.livedoor.com/topics/detail/214452... | 21445293 | 「うる星やつら」が36年ぶりにTVアニメ化 フジ・ノイタミナ枠で | フジテレビの深夜アニメ枠「ノイタミナ」で放送されるとのこと | ポジティブ | 0.877783 |
1 | https://news.livedoor.com/topics/detail/214463... | 21446393 | 「コミケ」の献血に長蛇の列で大盛況「オタクの鑑」など感心の声 | 東京都赤十字血液センターはTwitterで長蛇の列の様子を掲載し、感謝 | ポジティブ | 0.848410 |
2 | https://news.livedoor.com/topics/detail/214474... | 21447477 | 「逃走中」HIKAKINが逃走成功で150万円獲得 視聴者から祝福の声 | 賞金である150万円を獲得することとなり「やった〜!」と歓喜 | ポジティブ | 0.826164 |
3 | https://news.livedoor.com/topics/detail/214458... | 21445857 | 声優の飯田里穂が一般人との結婚を報告「あたたかく見守っていただけたら」 | ツイッターでは直筆書面にて「一般の方と入籍いたしました」と伝えている | ポジティブ | 0.924203 |
4 | https://news.livedoor.com/topics/detail/214453... | 21445372 | 餅がのどに詰まったら4分勝負、やるべき3つの対処法 NG行動は? | 人間は窒息すると4分で脳に影響が出るため、その場での対処が重要だという | ポジティブ | 0.862354 |
5. ポジティブ判定のニュース記事をスコア(ポジティブ度合い)の高い順にソートして表示
df[df['label'] == 'ポジティブ'].sort_values('score', ascending=False)
結果はこんな感じ。「ぱっと見た感じネガティブな気もしたけど、ポジティブに判定される記事もあるんだな」という印象。
url | id | title | summary | label | score | |
---|---|---|---|---|---|---|
30 | https://news.livedoor.com/topics/detail/214459... | 21445980 | 声優・井上麻里奈が青二プロダクションへ移籍「さらに精進して参ります」 | 「シグマ・セブンの皆様には感謝の気持ちで一杯」と前事務所に感謝 | ポジティブ | 0.962433 |
13 | https://news.livedoor.com/topics/detail/214446... | 21444622 | 天皇陛下と雅子さまがともに新年のビデオメッセージ 全文を紹介 | 陛下は、新型コロナウイルスや、発生から10年を迎えた東日本大震災に言及 | ポジティブ | 0.943239 |
20 | https://news.livedoor.com/article/detail/21446... | 21446256 | ロイヤルホスト“苺”スイーツ発売へ! 贅沢なパフェ&ケーキなど全5種類が登場 | ファミリーレストラン「ロイヤルホスト」は、1月12日(水)から、季節の… | ポジティブ | 0.934567 |
12 | https://news.livedoor.com/article/detail/21446... | 21446720 | ピンク可愛い ガーナ新作アイス | ロッテはチョコレート「ガーナ」ブランドの新作アイスクリーム「ガーナチョ… | ポジティブ | 0.930231 |
37 | https://news.livedoor.com/topics/detail/214460... | 21446051 | 「うる星やつら」が新作アニメ化 ラム役の声優・上坂すみれがコメント | ヒロイン・ラム役を上坂すみれ、主人公・諸星あたる役を神谷浩史が担当 | ポジティブ | 0.929826 |
24 | https://news.livedoor.com/article/detail/21446... | 21446472 | たこ壺に入った人気駅弁の「ひっぱりだこ飯」ドライカレーに | 神戸の老舗駅弁メーカー淡路屋(本社、神戸市東灘区)は1月7日、名物駅弁… | ポジティブ | 0.926005 |
26 | https://news.livedoor.com/article/detail/21444... | 21444730 | マイナポイント第2弾が本日(1月1日)スタート 当初は限定展開 | マイナンバーカードの取得・利用促進を目的とした「マイナポイント」事業の… | ポジティブ | 0.925518 |
3 | https://news.livedoor.com/topics/detail/214458... | 21445857 | 声優の飯田里穂が一般人との結婚を報告「あたたかく見守っていただけたら」 | ツイッターでは直筆書面にて「一般の方と入籍いたしました」と伝えている | ポジティブ | 0.924203 |
34 | https://news.livedoor.com/article/detail/21444... | 21444437 | 「ぐるナイ おもしろ荘」優勝は人力舎所属のピン芸人・ゆめちゃん | 日本エレキテル連合、おかずクラブ、ぺこぱといったブレイク芸人の登竜門… | ポジティブ | 0.917474 |
28 | https://news.livedoor.com/article/detail/21444... | 21444423 | アニメ『魔法科高校の劣等生』続編制作決定 特報映像も公開 | アニメ『魔法科高校の劣等生』の続編が制作されることが決定した。12月31… | ポジティブ | 0.913538 |
15 | https://news.livedoor.com/article/detail/21446... | 21446073 | 古川登志夫&平野文『うる星やつら』新作アニメ化で喜び「楽しみにしてるっちゃ!」 | 『週刊少年サンデー』(小学館)で連載されていた漫画『うる星やつら』(… | ポジティブ | 0.910654 |
6 | https://news.livedoor.com/article/detail/21447... | 21447352 | 三大流星群のひとつ「しぶんぎ座流星群」 1月3日深夜が見頃 | 三大流星群のひとつ「しぶんぎ座流星群」 1月3日深夜が見頃2022/01/01 20:0… | ポジティブ | 0.906668 |
31 | https://news.livedoor.com/article/detail/21444... | 21444198 | 「SUMMER SONIC 2022」8月20日、21日に東京と大阪で開催へ | 音楽フェス『SUMMER SONIC 2022』が今年8月20、21日に東京と大阪で開催さ… | ポジティブ | 0.895463 |
27 | https://news.livedoor.com/article/detail/21446... | 21446129 | Amazonプライムビデオ1月の新作:「約束のネバーランド」「今日から俺は!!劇場版」「銀魂... | 幅広い作品ラインアップが魅力のAmazon Prime Videoでは、毎月、新作の配信… | ポジティブ | 0.886706 |
21 | https://news.livedoor.com/article/detail/21444... | 21444375 | 「ジャニーズカウントダウン」でサプライズ、相葉雅紀が登場 | ジャニーズ事務所所属のアイドルグループが多数出演する年越しライブ「ジャ… | ポジティブ | 0.886215 |
0 | https://news.livedoor.com/topics/detail/214452... | 21445293 | 「うる星やつら」が36年ぶりにTVアニメ化 フジ・ノイタミナ枠で | フジテレビの深夜アニメ枠「ノイタミナ」で放送されるとのこと | ポジティブ | 0.877783 |
9 | https://news.livedoor.com/topics/detail/214456... | 21445695 | 大阪城とUSJを結ぶ遊覧船 2023年春にも定期運航が始まる見通し | 23年春に大阪城公園の船着き場が完成する見込みで、これを活用して運航する | ポジティブ | 0.876632 |
19 | https://news.livedoor.com/article/detail/21446... | 21446116 | 仮面ライダー図鑑、期間限定で“寅年”仕様に タイガにオーズにゼロワン ジオウは“平成34年”に | 仮面ライダーシリーズ公式ポータルサイトの人気コンテンツ「仮面ライダー… | ポジティブ | 0.872462 |
4 | https://news.livedoor.com/topics/detail/214453... | 21445372 | 餅がのどに詰まったら4分勝負、やるべき3つの対処法 NG行動は? | 人間は窒息すると4分で脳に影響が出るため、その場での対処が重要だという | ポジティブ | 0.862354 |
23 | https://news.livedoor.com/topics/detail/214462... | 21446237 | ニューイヤー駅伝で創部51年目のホンダが初優勝 6区で逆転首位 | 2区23位に落ちたが、6区でトップになり4時間51分04秒の記録で優勝した | ポジティブ | 0.861704 |
36 | https://news.livedoor.com/topics/detail/214442... | 21444220 | 12星座×血液型で見る2022年最強運ランキング 1位〜48位発表 | 1位は魚座×AB型で、思い切ったチャレンジが幸運を呼び寄せそう、とのこと | ポジティブ | 0.861353 |
25 | https://news.livedoor.com/article/detail/21444... | 21444170 | 映画「キングダム2」正式タイトル発表、スーパーティザーPVも解禁 | 2022年のはじまりとともに、実写映画『キングダム』の続編・パート2のタ… | ポジティブ | 0.850540 |
1 | https://news.livedoor.com/topics/detail/214463... | 21446393 | 「コミケ」の献血に長蛇の列で大盛況「オタクの鑑」など感心の声 | 東京都赤十字血液センターはTwitterで長蛇の列の様子を掲載し、感謝 | ポジティブ | 0.848410 |
14 | https://news.livedoor.com/article/detail/21445... | 21445327 | 23歳差の”恋心” ダニエル・ラドクリフがヘレナ・ボナム・カーター... | 俳優のダニエル・ラドクリフ(32)は、「ハリー・ポッター… | ポジティブ | 0.836254 |
7 | https://news.livedoor.com/topics/detail/214467... | 21446778 | 身長や挙動テスト 経験者が語る「逃走中」のハンターの採用条件 | ハンターの第1条件は身長180センチ以上で、モデルによく声がかかるという | ポジティブ | 0.836040 |
17 | https://news.livedoor.com/article/detail/21447... | 21447460 | YouTube『Johnny′s Gaming Room』が本格始動 “参戦”メンバー13人を発表 | ジャニーズのゲーム好きが集うYouTubeチャンネル『Johnny's Gaming Room… | ポジティブ | 0.832476 |
35 | https://news.livedoor.com/article/detail/21444... | 21444428 | JR山陰線で倒木 約90人が車中泊 | 12月31日深夜、京都府内のJR山陰線で特急「きのさき17号」など列車3本が… | ポジティブ | 0.829401 |
2 | https://news.livedoor.com/topics/detail/214474... | 21447477 | 「逃走中」HIKAKINが逃走成功で150万円獲得 視聴者から祝福の声 | 賞金である150万円を獲得することとなり「やった〜!」と歓喜 | ポジティブ | 0.826164 |
32 | https://news.livedoor.com/article/detail/21446... | 21446689 | 『土方のスマホ』“正月の陣”放送決定 賀来賢人が坂本龍馬役 | 俳優の窪田正孝が土方歳三を演じ、昨年9月から10月にかけてNHK総合で放送… | ポジティブ | 0.825295 |
29 | https://news.livedoor.com/topics/detail/214466... | 21446653 | JR松江駅で女性がけが 刃物を手にした男を現行犯逮捕 | 警察が現場に駆けつけたところ、けがをしている女性を発見 | ポジティブ | 0.816801 |
11 | https://news.livedoor.com/topics/detail/214466... | 21446661 | 「笑点」5年7カ月ぶりの新メンバーは桂宮治 正月特番内で発表 | 大喜利新メンバーとして、桂宮治が加わることが発表された | ポジティブ | 0.796677 |
22 | https://news.livedoor.com/topics/detail/214454... | 21445446 | 滋賀の県道高架下で焼けた遺体発見 仰向けの状態で死後数日が経過 | 遺体は仰向けの状態で、死後数日経過しているという | ポジティブ | 0.781807 |
8 | https://news.livedoor.com/topics/detail/214474... | 21447412 | 「ニューイヤー駅伝」優勝旗は授与されず 2021年王者の富士通が紛失 | 表彰式では優勝旗の授与はなく、優勝杯や賞状などがHondaに贈られた | ポジティブ | 0.772829 |
10 | https://news.livedoor.com/topics/detail/214455... | 21445513 | 鉛筆全体でHBの売り上げが激減 書写以外の小学校の授業ではBや2B推奨 | 1999年はHBが43%、2Bが22%だったが、2019年には2Bが51%、HBが20%に | ポジティブ | 0.743005 |
6. ネガティブ判定のニュース記事をスコア(ネガティブ度合い)の高い順にソートして表示
df[df['label'] == 'ネガティブ'].sort_values('score', ascending=False)
結果はこんな感じ。「ネガティブに判定されるのも納得」という印象。
感情分析器がポジティブ判定を出しがちなのか、お正月というタイミングなのか、ネガティブ判定のニュース記事は少ないような。。。
url | id | title | summary | label | score | |
---|---|---|---|---|---|---|
18 | https://news.livedoor.com/article/detail/21444... | 21444511 | マルフォイ役で知られるトム・フェルトン 母親から禁止されたこと | 「ハリー・ポッター」シリーズのドラコ・マルフォイ役などで知られる俳優の… | ネガティブ | 0.926198 |
33 | https://news.livedoor.com/topics/detail/214463... | 21446317 | オミクロン株、千葉で初の市中感染か 2週間以内の海外渡航歴のない2人感染 | 2人とも2週間以内の海外渡航歴などがないため、市中感染の疑いがあるという | ネガティブ | 0.670254 |
5 | https://news.livedoor.com/article/detail/21446... | 21446976 | 都内で6人のどに餅詰まらせ搬送…2人死亡 | 元日の1月1日、東京都内で6人が餅をのどに詰まらせて救急搬送され、この… | ネガティブ | 0.652022 |
16 | https://news.livedoor.com/article/detail/21445... | 21445030 | 2022年の年明けを告げる 初日の出 | あけましておめでとうございます!2022年がスタートしました。太平洋側は晴… | ネガティブ | 0.582705 |
まとめ
公開されたBERTモデルを利用して、ニュース記事を感情分析する方法を紹介しました。
簡単に利用できるのにもかかわらず、その結果は想像以上に納得感のあるものと思いました。
-
Open Resources【公開資源】https://www.nlp.ecei.tohoku.ac.jp/research/open-resources/ ↩
-
日本語評価極性辞書 http://www.cl.ecei.tohoku.ac.jp/Open_Resources-Japanese_Sentiment_Polarity_Dictionary.html ↩
-
PyTorch Release 20.11 https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel_20-11.html#rel_20-11 ↩