俺もデータサイエンティストやってみます

データサイエンティストがなにかわかってもないです。

アーティストみたいなもんじゃないんですか?知らんけど

経緯

Pythonでネットニュース記事の文章を大量抽出する - 自由研究をします。

Pythonで取得したデータを整形する - 自由研究をします。

一昨日、昨日、と「デマになりえそうな文章」を把握するために「人の目を引きやすい文章とはどんなものか」を知りたいと考え、大衆紙のネット記事を抽出していました。 今回はそれらを元にGoogleの感情分析API「Natural Language API」を使用して分析していきます。

cloud.google.com

今回はなんかソレっぽいことやってるんでこれで僕もこれからはデータサイエンティスト名乗れたりせんかなって思ってます。データ分析とかまったく知らんしグラフの見方の知識は小学校の算数でやったことしか知らんので雰囲気でやっていくことしかできませんけど。

書いた

import requests 
import os
from dotenv import load_dotenv

load_dotenv()

GOOGLE_LANG_API_KEY  = os.environ['GOOGLE_LANG_API_KEY']

#APIキーを入力
key = GOOGLE_LANG_API_KEY

#感情分析したいテキスト
text = "降板したショーンK氏の後任として、夜のニュース番組「ユアタイム」(フジテレビ系)にレギュラー出演することになったモーリー・ロバートソン氏。 今回、モーリー氏にショーンK氏についての取材を申し込むと、真意を説明したいと自ら執筆した原稿が編集部に届いた。いち早くショーンK氏、そして日本メディアの“デタラメ”に気づいていたモーリー氏が、緊急出演の舞台裏や問題の本質を、包み隠さずに明かす――。◆ ◆ ◆ さる3月、文春砲が撃たれ、第二弾に被弾した「ショーンK」を名乗り続けていた人物は屈服、J-WAVEで嗚咽しながらのお詫びをする。そのお詫び放送を銀座の端にあるレストランで聴いた。最後に流れた番組のお知らせは、J-WAVEが「うちは特に悪くありませんから」と幕引きする内容だった。ここにおいて「ショーンK」は使い捨てられた。 同じ頃、ぼくは『ユアタイム』出演日数が劇的に増えた。それは想定内だった。だが、続けて予期しなかった事態が連続する。東スポ、日刊ゲンダイ、週刊ポスト、アサヒ芸能などにゴシップ記事が書かれたのだ。None など、お約束のいじりである。「ショーンK」の経歴詐称が発覚し、フジテレビは動揺しきっていた。これ以上炎上したくない、という無理もないロジックで、今度は「後釜」であるぼくが詮索された。ぼくの学歴は輝かしいが、詐称はない。1981年に東京大学とハーバード大学に同時合格し、東大に1学期だけ通った後で休学(その後退学)し、ハーバードに入学、卒業したことは周知の事実だ。実は『よくひとりぼっちだった』というタイトルで合格までの経緯を自叙伝に著し、他ならぬ文藝春秋から1984年に発表している。当時、5万部を超えるノンフィクション部門のベストセラーにもなった。 だが「ショーンK」で動揺したフジテレビ側は不安を拭えず、「東大とハーバード以外に合格したすべての大学の合格通知のコピーを提出してください」 と過剰な身体検査を要求。その後も東スポに引用されたぼくの過去のツィートが追求の対象になった。 そのツィートはこういう内容だ。「コカインはやったことがあります。最初で最後にやったのはアメリカで1985年頃でした。鼻からです。オバマより回数は少ないはず」 これは2015年に、日本の薬物報道の不毛さを揶揄するべく書き込んだものだったが、スキャンダルを洗い出そうとする東スポのたゆまぬ努力で検索に引っかかった。フジテレビ側は、「コカインをい<e3><81><a4>やったのか。何度やったのか。当時のアメリカの法律でこれはどれぐらいの量刑となる罪だったのか」 というディテールを提出せよ、と再三連絡してきた。1985年、つまり31年前のマサチューセッツ州のコカインに関する州法をオフィス・モーリーのチームで調べて回答文を送信した。微罪であり、アメリカ在住時の行為で、一度きりであり、しかも多分時効だ。だがそれでもフジテレビ側の疑心暗鬼は静まらず、「ほかに何かありませんか」 という問い合わせが相次いだ。 過剰な身体検査はとどまるところを知らず、最終的には「ニコ生」での配信を自粛もしくは停止してほしいという、ぼくからすると荒唐無稽な要求まで飛び出した。せっかく手にした地上波のチャンスをふいにするのは残念だったが、「ニコ生」に有料登録までしてくれた2000人以上のユーザーを裏切るつもりはない。潔く「それでは番組を降板させていただきます」 と交渉する一歩手前で、案外すんなりと「ニコ生」への自粛要請は立ち枯れた。勘ぐった言い方をするなら、「ショーンK」に続いてぼくまでが降板したら番組が立ちいかなくなる。強気の交渉をすることで、フジテレビとの関係は正常化した。"

#APIのURL
url = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + key

#基本情報の設定 JAをENにすれば英語のテキストを解析可能
header = {'Content-Type': 'application/json'}
body = {
    "document": {
        "type": "PLAIN_TEXT",
        "language": "JA",
        "content": text
    },
    "encodingType": "UTF8"
}

#json形式で結果を受け取る。
response = requests.post(url, headers=header, json=body).json()

#分析の結果をコンソール画面で見やすく表示
print(response["documentSentiment"])

結果

{'magnitude': 6.8, 'score': -0.1}

例によって文春記事のひとつを適当に抜粋して感情分析にかけました。

実装の参考→PythonでGoogle Natural Language APIを叩いて感情分析 | AVILEN AI Trend

感情分析をかけた記事→ショーンKの後任、モーリー・ロバートソンが書いた「ショーンK問題の真相」 | 文春オンライン

結果の見方はGoogleのドキュメントを参考にしました。

cloud.google.com

「感情分析のレスポンスフィールド」の項以下を参照

score: -1.0(ネガティブ)~1.0(ポジティブ)のスコアで感情が表されます。これは、テキストの全体的な感情の傾向に相当します。
magnitude: 指定したテキストの全体的な感情の強度(ポジティブとネガティブの両方)が 0.0~+inf の値で示されます。score と違って、magnitude は正規化されていないため、テキスト内で感情(ポジティブとネガティブの両方)が表現されるたびにテキストの magnitude の値が増加します。そのため、長いテキスト ブロックで値が高くなる傾向があります。

要はscoreが文章全体の感情の種類を(ネガティブかポジティブか。この場合では怒りとか悲しみとかはネガティブに分類され、喜びとか嬉しさがポジティブに分類されるみたい)表わしていて、magnitudeが文章の総合的な感情の大きさを表わしてるっぽい。

ここでのポイントが、magnitudeはあくまでも総合的な値であって、文章が長くなればなるほど必然と文中の感情ポイントは加算されていくので結果的な値はふくれあがっていくのが普通っぽい。

そしてscoreは要は文章内の平均的な感情のスコアであって、

多分オタクの長文映画感想とかは「ありえんよさみ!w 無限に泣きをしまつ。○○が尊すぎて鉄板ネタに大声でゲラゲラ笑ってる(真顔) そして一瞬で鬱になった」みたいな感情の高低が激しい文だと実際の内容はかなり感情濃いめなのにscoreの値は割と落ちついた結果になってる...みたいなのになるのかもしれない

ちなみに感情分析にさっきの即席オタク構文をぶっこんだら

{'magnitude': 0.6, 'score': 0}

って出た。やっぱりscoreは0だしさっき推測した判定っぽくなってる。まあでもこれはmagnitudeの値との差異を見れば理解できそう。

magnitudeがめちゃくちゃ高いのにscoreが0に近かったりしたら「あ~、もしかして感情の起伏が激しい文章なのかな」とか推測できる。

んで

https://raw.githubusercontent.com/iinoten/tweet-test-bot/master/replaced_netnewsdata.json

整形して400行くらいになった文春の記事を全部分析にかけた。一応感情分析APIで、文章をそれぞれ文節に分けていっこいっこスコアを出してくれる機能もあるんだけど、それをすると結果を表示させるのに処理がめんどくさそうなので文書全体を一括で処理してやってみる。

import requests 
import os
import json
from dotenv import load_dotenv

load_dotenv()
GOOGLE_LANG_API_KEY  = os.environ['GOOGLE_LANG_API_KEY']

json_open = open('./replaced_netnewsdata.json', 'r')
json_load = json.load(json_open)
news_data_array = json_load['data']
 
#APIキーを入力
key = GOOGLE_LANG_API_KEY

#APIのURL
url = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + key

analysed_data_json = []

for index, news_text in enumerate(news_data_array):
  #基本情報の設定 JAをENにすれば英語のテキストを解析可能
  header = {'Content-Type': 'application/json'}
  body = {
      "document": {
          "type": "PLAIN_TEXT",
          "language": "JA",
          "content": news_text
      },
      "encodingType": "UTF8"
  }
  #json形式で結果を受け取る。
  response = requests.post(url, headers=header, json=body).json()
  #分析の結果をコンソール画面で見やすく表示
  print(response["documentSentiment"])
  analysed_data_json.append({
    "text": news_text,
    "documentSentiment": response["documentSentiment"]
  })
print (analysed_data_json)
with open('./analysed_netnewsdata.json', 'w') as f:
    json.dump({"analysed_data":analysed_data_json}, f, ensure_ascii=False, indent=4)

analysed_netnewsdata.jsonに保存するようにした。

結果は

{
            "text": "「シン・ゴジラ」が...(長くなるので省略)",
            "documentSentiment": {
                "magnitude": 8.1,
                "score": 0
            }
}

てな感じで収めた。

https://raw.githubusercontent.com/iinoten/tweet-test-bot/master/analysed_netnewsdata.json

↑見たかったらどうぞ。

これで記事全体の傾向とかを読みとれるようになるはず。でももうちょっとひとひねりしてわかりやすくビジュアル化したい。

Pythonだったらそれっぽくグラフとか作れるやろ

書いた

てことでググったらでてきた。

www.python.ambitious-engineer.com

matplotlibとかいうので出来るらしい。

pipでの導入→NumPy、pandas、Matplotlib をpipでインストールする方法 | ガンマソフト株式会社

コードの参考→matplotlib入門 散布図の作成 | Python学習講座

そんで参考にしたコードを実行してグラフを表示しようとしたら「バックグラウンドでそれ用の表ソフト起動しとけや」みたいな事を言われたのでめんどくさいので画像として保存することにした。

参考→matplotlibの図を表示できないエラーを解決する方法 | にわこま ブログ

書いたやつ

import matplotlib.pyplot as plt
import json
 
json_open = open('./analysed_netnewsdata.json', 'r')
json_load = json.load(json_open)
analysed_news_data_array = json_load['analysed_data']

# 対象データ
x = []
y = []

for index, analysed_result in enumerate(analysed_news_data_array):
  x.append(analysed_result["documentSentiment"]["magnitude"])
  y.append(analysed_result["documentSentiment"]["score"])
 
# figureを生成する
fig = plt.figure()
 
# axをfigureに設定する
ax = fig.add_subplot(1, 1, 1)
 
# axesに散布図を設定する
ax.scatter(x, y, c='b', s=1)
 
# 表示する
plt.savefig("scalar_plot_graph.jpg")

それで出来た散布図

f:id:ten0313:20200923033719j:plain

縦軸がscore、横軸がmagnitude。最頻値とか中央値とか平均値とかわかるもん?数学とかわかる人は表とか見ただけで。俺はさっぱりわからん。

とりあえずscoreが0なのが多いのんな~ってこととmagnitudeが10を超えるものって少ないんだな~ってことくらい。文章の文字数とかをグラフに入れこんでない状態だから次やる時はそこらへんも含めて見ていきたいな。

てかこれそもそも散布図が正しい表示方法なのかもよくわからん。

Pythonで取得したデータを整形する

整形っていっても 1.jsonファイルを読み込む 2.要らない行とか文字列とかを削除する 3.変換したデータをファイルをもういっかいjsonファイルに押し込む これをするだけ

経緯

Pythonでネットニュース記事の文章を大量抽出する - 自由研究をします。 これをやった結果、文春のオンライン記事のデータファイルができた。900行くらい。

tweet-test-bot/netnewsdata.json at master · iinoten/tweet-test-bot · GitHub

いい感じ。でも中身を見ると良い感じではない

None
{空白}
\u3000

とかのおかしいのが混じってる。多分この後解析をするんだったらよろしくなさそう

https://bunshun.jp/articles/-/6 こんな感じで記事が削除されてたり画像のみのページがあったりするので多分それが原因っぽい。

書いた

import json

json_open = open('./netnewsdata.json', 'r')
json_load = json.load(json_open)
news_data_array = json_load['data']

form_news_data_array = []
for index, news_item in enumerate(news_data_array):
  replaced_news_text = news_item.replace("\u3000", "")
  replaced_news_text = news_item.replace("None", "")
  if not(replaced_news_text==''): form_news_data_array.append(replaced_news_text)

with open('./replaced_netnewsdata.json', 'w') as f:
    json.dump({"data":form_news_data_array}, f, ensure_ascii=False, indent=4)

こんな感じ

json_open = open('./netnewsdata.json', 'r')
json_load = json.load(json_open)
news_data_array = json_load['data']

news_data_arraynetnewsdata.jsonからのデータを取得。

form_news_data_array = []
for index, news_item in enumerate(news_data_array):
  replaced_news_text = news_item.replace("\u3000", "")
  replaced_news_text = news_item.replace("None", "")

取得した配列をforで回して無駄な字を削除

 if not(replaced_news_text==''): form_news_data_array.append(replaced_news_text)

form_news_data_arrayって空の配列を用意して空文字の要素以外の要素を追加

with open('./replaced_netnewsdata.json', 'w') as f:
    json.dump({"data":form_news_data_array}, f, ensure_ascii=False, indent=4)

replaced_netnewsdata.jsonに整形したjsonデータを追加

https://raw.githubusercontent.com/iinoten/tweet-test-bot/master/replaced_netnewsdata.json 良い感じかも(量の多いデータファイルだとgithubのページに表示されないんですね)

Pythonでネットニュース記事の文章を大量抽出する

昔「Pythonを書くんだヨ!」とかいうふざけた記事を書いたことがある気がする。

今日はクソデカステーキを食べるために秋葉原に行く予定。楽しみ。良い感じの椅子と机買ってよろこんでる。

経緯

CivitechChallengeCupU22とかいうのに出場してる。詳しくはリンク先で。

ccc2020.code4japan.org

そこで自分はSNS(主にTwitterで)でのデマ拡散を食いとめるための方法を作ろうとしてて、情報発信系のツイートを良い感じに審査して内容の信頼性とか算出できたらいいよね。とか思ってる。とりあえず「拡散されやすい文」の傾向を調べたいんだけど、どういうのが当てはまるだろうと思った時に(本場Twitterで拡散されてる投稿文の収集は他のチームメンバーの人にたのんだ。情報の母数は多いほうがそら良いだろうと思って僕はTwitter以外の場所で探そうと思った)大衆雑誌の煽り文とか思い浮かんだ。電車の吊り広告とかで揺れてるアレとか。あれ、内容はさておき、愚かな民衆を煽るにはうってつけなんだろうなってワードで溢れてるし、キャッチーな文とは、人が共有したくなる文とは、人の感情を揺さぶる文とはを知りたい今回はうってつけだとおもった。

bunshun.jp

文春オンラインっていう週刊文春の記事をネットで読めるサイトでちまちまひっぱってきてとかしてたんだけど、らちが明かない。

ここはビシっとカッコよくピィチョンとか書いてスクレイピングしていくか~~って気分になれた。

書きます

スクレイピング、よく聞くけどあんましやったことない(NodeJSとかでcheerio(?)つかってチョットダケやったことはある)。

どうやらPythonではrequestっていうライブラリ?モジュール?とかを使ってやるみたい。それをbeautifullsoupとかいうのでパースするの???

書いた↓

import requests
from bs4 import BeautifulSoup
import re

urlName = "https://bunshun.jp/articles/-/1"
url = requests.get(urlName)
soup = BeautifulSoup(url.content, "html.parser")

elems = soup.find_all("p")

return_string = ""
for elem in elems: 
  if ( not (elem.get("class")) and not(elem.string == "SCOOP!") and not(elem.string == "NEW") and not(elem.string == "ABJマークは、この電子書店・電子書籍配信サービスが、著作権者からコンテンツ使用許諾を得た正規版配信サービスであることを示す登録商標(登録番号6091713号)です。" )): 
    p_parent_class_name = elem.find_parent('div').get("class")#親要素のクラス名を取得
    if ( p_parent_class_name == ["article-body"] ):#親要素のクラス名がarticle-bodyの場合内容を出力
      elem_text = elem.string
      return_string = return_string + elem_text
print("結果:" + return_string) 

参考→【初心者向け】PythonでWebスクレイピングをやってみる - Qiita

結果↓

結果:「シン・ゴジラ」が熱い。公開直後からネット上では「凄すぎて泣いた」(一般人)「ここ10年ぐらいの邦画のナンバーワン」(評論家・宇野常寛氏)など絶賛の嵐。一方で「日本人=日本国家への信頼と鼓舞ばかりが語られ、不気味だった。ニュータイプの国策映画だ」(批評家・杉田俊介氏)など、作品の「右傾化」を批判する論調も少なくない。 要するに、観た人の多くが「オレはこう思う!」と熱く語り始めたくなるような、日本人にとって切実な

はいはいゴジラがウンタラカンタラって書いてある。いけてるっぽい。

やってること

elems = soup.find_all("p")

でページ内のPタグ要素を全部取得して

  if ( not (elem.get("class")) and not(elem.string == "SCOOP!") and not(elem.string == "NEW") and not(elem.string == "ABJマークは、この電子書店・電子書籍配信サービスが、著作権者からコンテンツ使用許諾を得た正規版配信サービスであることを示す登録商標(登録番号6091713号)です。" )): 
    p_parent_class_name = elem.find_parent('div').get("class")#親要素のクラス名を取得
    if ( p_parent_class_name == ["article-body"] ):#親要素のクラス名がarticle-bodyの場合内容を出力
      elem_text = elem.string
      return_string = return_string + elem_text

クラス名とか見て記事の文章だけを抜きとってる。

もっとたくさんの記事を抽出する

import requests
from bs4 import BeautifulSoup
import re

content_count_num = 1
news_content_array = []
for i in range(5):
  table_content_num = content_count_num
  urlName = "https://bunshun.jp/articles/-/" + str(table_content_num)
  url = requests.get(urlName)
  soup = BeautifulSoup(url.content, "html.parser")
  elems = soup.find_all("p")
  return_string = ""
  for elem in elems: 
    if ( not (elem.get("class")) and not(elem.string == "SCOOP!") and not(elem.string == "NEW") and not(elem.string == "ABJマークは、この電子書店・電子書籍配信サービスが、著作権者からコンテンツ使用許諾を得た正規版配信サービスであることを示す登録商標(登録番号6091713号)です。" )): 
      p_parent_class_name = elem.find_parent('div').get("class")#親要素のクラス名を取得
      if ( p_parent_class_name == ["article-body"] ):#親要素のクラス名がarticle-bodyの場合内容を出力
        elem_text = elem.string
        return_string = return_string + str( elem_text )
  news_content_array.append( return_string )
  print("結果:" + return_string)
  print("===========")
  content_count_num +=1
print(news_content_array)

別に難しいこととかやってなくて、とりあえず https://bunshun.jp/articles/-/1 から https://bunshun.jp/articles/-/5 までの記事をloopで回して全部をもってきてる。

んでそれを配列に格納してjsonファイルに入れた。

with open('./netnewsdata.json', 'w') as f:
    json.dump({"data":news_content_array}, f, ensure_ascii=False, indent=4) 

news_content_arrayが記事の文を収めた配列。結果のjsonファイルはこんな感じ↓

{
    "data": [
        "「シン・ゴジラ」が熱い。公開直後からネット上では「凄すぎて泣いた」(一般人)「ここ10年ぐらいの邦画のナンバーワン」(評論家・宇野常寛氏)など絶賛の嵐。一方で「日本人=日本国家への信頼と鼓舞ばかりが語られ、不気味だった。ニュータイプの国策映画だ」(批評家・杉田俊介氏)など、作品の「右傾化」を批判する論調も少なくない。 要するに、観た人の多くが「オレはこう思う!」と熱く語り始めたくなるような、日本人にとって切実な問題提起、深い謎かけをしている映画なのだ。 私自身、仕事をさぼって公開初日の朝9時から鑑賞したが、正直打ちのめされるような思いを味わった。「今、日本でゴジラを作るとはどういうことか」「怪獣映画を、極上の大人向けエンターテインメントに仕立て上げるには何が必要か」ということを、庵野秀明総監督を始めとする作り手たちが考え抜き、持てる限りのアイデアと力を注ぎ込んだことが、画面の隅々から伝わってきたからだ。映画作りと物書き。ジャンルは違えど「自分はこれほど誠実に仕事に取り組んできただろうか」と、考え込まざるを得ないほどの衝撃だった。 ネット上では、ゴジラが大田区蒲田に上陸して群衆が逃げ惑うシーンを撮影する際、スタッフがエキストラたちに配布した説明文、通称「蒲田文書」が話題になっている。「皆さま、本日は各々方の想像力を目一杯稼働させていただき……、皆さまお一方お一方にしか出来ないお芝居をしてください」「この映画を1ミリでも質の高い映画にするために、何十年、百年単位で語り継がれる映画にするために、皆さまのお力をお貸しください」。多少の暑苦しさはあるものの、作り手たちの気迫がにじみ出た文章と言えるだろう。 そもそも、1954年に公開された第一作の「ゴジラ」こそ、一般の大人向けに作られ、記録的な大ヒットをした作品だった。 圧倒的に強大で異質な存在が突然現れ、自分たちの住む街を、社会を蹂躙し、日常生活を破壊し尽くす。私たちはそれに対して為す術もなく逃げ惑うか、立ち尽くすしかない――。その絶望感と無力感を観る者に体験させることが、初代ゴジラのすごさであり、当時の日本人にはそんな物語を求める切実な時代背景があった。先の戦争における大空襲や原爆投下の体験、水爆実験による第五福竜丸の放射能汚染事件、そして冷戦下での核戦争への恐怖……。 逆に言えば、「怪獣」という徹頭徹尾荒唐無稽な存在が、生々<e3><81><97>いリアリティーをもって人々から受け入れられるのは、極めて特殊な状況下に限られる。戦争の記憶が薄れ、冷戦が終結する中で、怪獣映画が子どもや一部のマニア向け作品へと退行していったのも、自然な流れだろう。 だが、「シン・ゴジラ」を見て実感させられたのは、私たち自身が今、「怪獣映画をリアルに、生々しい物語として体験できる日本」に、いつの間にか引き戻されていることだった。 言うまでもなく、それをもたらしたのは、東日本大震災と福島第一原発事故だ。1、2、3号機の炉心が溶け落ち、1、2、4号機が爆発した2011年の3月半ば、私たちは一切の誇張抜きで「福島以西の東日本全域で、人が住めなくなるかもしれない」という危機に直面していた。それを何とか避けられたのは、いくつかの「幸運という名の偶然」が重なったからに過ぎない。 4基の原発はまさに「放射性物質を吐き出しながら荒れ狂う4匹の怪獣」であり、私たちに為す術はほとんどなかった。当時感じていたが、いつの間にか忘れつつあった絶望感や無力感。それを「シン・ゴジラ」は生々しく甦らせるのだ。 最初のゴジラは空襲や原水爆のメタファーだったが、今回のゴジラは一貫して「メルトダウンした原発」を象徴している。それは「暗喩」というつつましいレベルではなく、「ゴジラの背中にそう書いてある」と言っていいほど、あからさまで大胆なものだ。 そして、邦画史上最大規模という328人(ゴジラの動きを演じた野村萬斎を含めれば329人)もの俳優を動員したのは「ゴジラという『虚構』を使って、原発事故当時の日本の『現実』をまるごと再現する」という作り手の強い意思の表れだろう。映画のコピー「現実(ニッポン)対虚構(ゴジラ)」とは、そういうことだったのだ。 これほど野心的で挑戦的な日本映画が、近年あっただろうか。これこそ、「3.11」後、潜在的にはずっと求められていたが、誰も作り得なかった「新たな国民映画」ではないか。「ゴジラ」という巨大なウソを映画として完璧に成立させるには、その対立項として、それほど大きく重い現実が必要だった、という見方もできるし、逆に「ゴジラ」という虚構のクッションを挟むことで初めて、私たちは「あの頃の日本と自分」に正面から向き合える機会を得られた、とも言えるだろう。「箱庭療法」と呼ばれる心理療法がある。心に傷を負った患者が、砂の敷かれた箱庭の上で様々な玩具と戯れることで、自分自身の内面の葛藤を象徴するさまざまな「物語」を紡ぎ出し、治癒に至る、というものだ。例えるならば「ゴジラがいる世界」とは、日本人が自らのトラウマを象徴的に表現し、それと向き合うための「箱庭」のような存在ではないだろうか。 そして「箱庭」を成立させるには、ゴジラをいかに恐ろしく、禍々しく、「現実離れしているがリアルな存在」として描けるか、ということが鍵になる。 初代の「ゴジラ」が上映された当時、ゴジラが最初に島の陰からぬっと顔を出すシーンでは、映画館の前の席の客から後ろの席の客へと、順番にのけぞっていったという。当時の観客にとって、ゴジラはまったく未知の恐ろしい存在だったが、現代の日本人にとってのゴジラは、見慣れた愛すべきキャラクターだ。それをいかにして「非日常的な脅威」へと再生させるのか。作り手たちはそのために、あらん限りの知恵を絞り、あっと驚く様々な仕掛けを用意している。 それらは是非、劇場で自ら確認して欲しい。2014年のハリウッド版「ゴジラ」では、劇場であくびをかみ殺すのに苦労した私だったが、「シン・ゴジラ」ではぽかんと口を開けて見入ってしまうシーンがいくつかあった、とだけ言っておこう。 映画は基本的に「現実の冷徹なシミュレーション」に終始しているが、作り手が例外的に共感を隠さない現実の人々が、高濃度の放射能汚染の中、原発を冷却する決死の放水作戦を敢行した自衛隊員、消防隊員たちだ。クライマックスの対ゴジラ作戦が、この放水作戦への熱いオマージュとなっていることは、誰の目にも明らかだろう。 怪獣映画で難しいのが、「いかに事態を収束させるか」という幕引きだ。初代ゴジラでその役割を果たしたのは、水爆をも超える威力の兵器「オキシジェンデストロイヤー」だった。広島・長崎に原爆が投下されたわずか7年後に、原爆をはるかに上回る威力の水爆が開発された当時にあっては、その設定には十分な説得力があった。 だが、現代の現実の再現を目指した「シン・ゴジラ」に、超兵器の登場はあり得ない。その代わりにゴジラに立ち向かうのは「生身の現場の人間たち」なのだ。 原発事故という悪夢のような現実の中にあった私たちが、いかに放水作戦を固唾をのんで見守り、無名の隊員たちの献身に胸を熱くしたか――。映画を通じてその記憶を甦らせた私たちは、ゴジラという虚構の悪夢に対抗できるのもまた「無名の人々による無償の献身」しか有り得ない、という作り手たちの主張に、深く納得させられるのだ。",
        " 降板したショーンK氏の後任として、夜のニュース番組「ユアタイム」(フジテレビ系)にレギュラー出演することになったモーリー・ロバートソン氏。 今回、モーリー氏にショーンK氏についての取材を申し込むと、真意を説明したいと自ら執筆した原稿が編集部に届いた。いち早くショーンK氏、そして日本メディアの“デタラメ”に気づいていたモーリー氏が、緊急出演の舞台裏や問題の本質を、包み隠さずに明かす――。◆ ◆ ◆ さる3月、文春砲が撃たれ、第二弾に被弾した「ショーンK」を名乗り続けていた人物は屈服、J-WAVEで嗚咽しながらのお詫びをする。そのお詫び放送を銀座の端にあるレストランで聴いた。最後に流れた番組のお知らせは、J-WAVEが「うちは特に悪くありませんから」と幕引きする内容だった。ここにおいて「ショーンK」は使い捨てられた。 同じ頃、ぼくは『ユアタイム』出演日数が劇的に増えた。それは想定内だった。だが、続けて予期しなかった事態が連続する。東スポ、日刊ゲンダイ、週刊ポスト、アサヒ芸能などにゴシップ記事が書かれたのだ。None など、お約束のいじりである。「ショーンK」の経歴詐称が発覚し、フジテレビは動揺しきっていた。これ以上炎上したくない、という無理もないロジックで、今度は「後釜」であるぼくが詮索された。ぼくの学歴は輝かしいが、詐称はない。1981年に東京大学とハーバード大学に同時合格し、東大に1学期だけ通った後で休学(その後退学)し、ハーバードに入学、卒業したことは周知の事実だ。実は『よくひとりぼっちだった』というタイトルで合格までの経緯を自叙伝に著し、他ならぬ文藝春秋から1984年に発表している。当時、5万部を超えるノンフィクション部門のベストセラーにもなった。 だが「ショーンK」で動揺したフジテレビ側は不安を拭えず、「東大とハーバード以外に合格したすべての大学の合格通知のコピーを提出してください」 と過剰な身体検査を要求。その後も東スポに引用されたぼくの過去のツィートが追求の対象になった。 そのツィートはこういう内容だ。「コカインはやったことがあります。最初で最後にやったのはアメリカで1985年頃でした。鼻からです。オバマより回数は少ないはず」 これは2015年に、日本の薬物報道の不毛さを揶揄するべく書き込んだものだったが、スキャンダルを洗い出そうとする東スポのたゆまぬ努力で検索に引っかかった。フジテレビ側は、「コカインを<e3><81><84>つやったのか。何度やったのか。当時のアメリカの法律でこれはどれぐらいの量刑となる罪だったのか」 というディテールを提出せよ、と再三連絡してきた。1985年、つまり31年前のマサチューセッツ州のコカインに関する州法をオフィス・モーリーのチームで調べて回答文を送信した。微罪であり、アメリカ在住時の行為で、一度きりであり、しかも多分時効だ。だがそれでもフジテレビ側の疑心暗鬼は静まらず、「ほかに何かありませんか」 という問い合わせが相次いだ。 過剰な身体検査はとどまるところを知らず、最終的には「ニコ生」での配信を自粛もしくは停止してほしいという、ぼくからすると荒唐無稽な要求まで飛び出した。せっかく手にした地上波のチャンスをふいにするのは残念だったが、「ニコ生」に有料登録までしてくれた2000人以上のユーザーを裏切るつもりはない。潔く「それでは番組を降板させていただきます」 と交渉する一歩手前で、案外すんなりと「ニコ生」への自粛要請は立ち枯れた。勘ぐった言い方をするなら、「ショーンK」に続いてぼくまでが降板したら番組が立ちいかなくなる。強気の交渉をすることで、フジテレビとの関係は正常化した。",
        "〈当サイトに掲載した8月25日付記事『NHK特集、「貧困の子」がネット上に高額購入品&札束の写真をアップ』における以下記述について、事実誤認であることが発覚しましたので、次のとおり訂正してお詫びします〉 ネットメディア「ビジネスジャーナル」(以下・BJ)が、自身のサイトでこんな訂正記事を出したのは、8月31日のこと。◆ ◆ ◆BJは「日刊サイゾー」などのネットメディア事業や出版事業を手掛けるサイゾー社(代表・揖斐憲氏)が運営するビジネス系ネットメディア。サイゾー社は年商11億円を誇る業界大手で、その中でもBJは月間3~4000万PV(ページビュー)を稼ぐというドル箱コンテンツだ。事の発端はNHKが8月18日のニュース番組内で放送した「子供の貧困」特集だった。母子家庭の女子高生が登場し、エアコンのない部屋に住み、「(パソコンが買えないので母が)キーボードだけ」買ってくれたなどと語った。これに対して、ネット上では、「女子高生のSNSをみると結構散財している」などと、NHKの“ヤラセ”を疑う声が続出。それに便乗するような形で8月25日、BJは、女子高生の部屋の映像にはエアコンが映っており、SNSでは散財の様子も確認できる等と指摘した編集部名義の記事を掲載した。「貧困というテーマはネットではよく読まれる売れ線ネタなので、BJでも取り上げたのでしょう。しかし、NHKの映像にはエアコンは映っておらず完全な事実誤認。つまりこの記事は、当該番組の映像すら確認せず、ネットなどで拾った真偽不明の情報によって書かれたお粗末なものだったことが明らかになった」(ネットメディア関係者)さらにBJの記事では〈今回の疑惑に対してNHKに問い合わせのメールをしてみたところ、「NHKとしては、厳正な取材をして、家計が苦しく生活が厳しいという現状であることは間違いないと、担当者から報告を受けています」(中略)との回答を得た〉と記述していたが、この回答がまったくの捏造だったことまで発覚した。「記事を見たNHKから、『こんな取材受けてない』と猛抗議を受けて、慌てて〈実際には、弊社はNHKに取材しておらず、回答は架空のものでした〉と訂正記事を出したという経緯です」(同前) 何よりBJが記事にしたことで、女子高生は更なる被害を受けることとなった。 記者の素性についてサイゾー関係者が声を潜める。「サイゾー社は〈当該記事は外部の契約記者が執筆〉と公表していますが、実際はBJ編集部に所属している契約記<e8><80><85>が書いたもの。彼は編集部に所属してまだ数カ月で、記者経験は無かったと聞いています。捏造した回答については、『NHKに電話したらこう答えていたというネット情報を引き写して書いた。正確な情報だと思った』と説明しているようです」 記者をチェックすべき編集部の陣容はというと、「BJ編集長の石崎肇一氏は大手電機メーカーの営業からサイゾー社に転身してきた変わり種で『社畜』と呼ばれるほどの仕事人間ですが、報道経験には乏しい。編集部員も3人と少なく、取材の稚拙さは明らかで、いつか大きなトラブルを起こすのではないかと懸念されていました」(同前) 日本インターネット報道協会の代表理事で、編集者の元木昌彦氏はこう語る。「ネットメディアには取材や原稿のイロハのイも分からない人も多い。書き手やチェックする編集者のレベルをどう上げるかが、ネットジャーナリズムの大きな課題となっているのです」 ある新興ネットメディア編集者は、「志の低さ」を指摘する。「広告収入がメインとなっている老舗ネットメディアの問題は、コストをかけずに記事を作るという方式が常態化していることです。これは“コタツ原稿”と揶揄される手法で、要はコタツの上だけで取材・執筆が完結する。まともに取材をしないで記事を書くから、捏造やパクリといった手法に陥り易いのです」 サイゾー社が運営する「日刊サイゾー」と共に、老舗ネットメディアの一つとされるのが「J-CASTニュース」(以下・ジェイキャスト)である。06年に朝日新聞出身で元「AERA」編集長だった蜷川真夫氏が設立したネットメディアで、現在は元朝日新聞役員の杉浦信之氏が編集長を務めている。杉浦氏といえば朝日新聞時代、慰安婦問題に関する同社の姿勢に疑問を呈した池上彰氏のコラムの不掲載を指示した張本人としても知られる。「ジェイキャストには新聞記者出身等で取材経験のあるスタッフはいるのですが、独自性のない記事ばかりを量産している」(同前) 例えば「小池知事、都知事選の『秘話』公開 野田聖子氏が『手伝ってくれていた』」(9月3日)という記事は、新聞記事の引用のみで書かれたもの。民間調査会社のレポートでも〈自らの調査報道は殆どない点が特徴で、ローコストでの運営を可能としている。取材やコストを省力化した簡易メディアと評されることもある〉と、要は“パクリ”でコストを削っていると分析される始末だ。 こうした指摘についてジェイキャストは、「創刊以来、編集方針のひとつに『メディア・ウオッチ』を掲げており、日常的に様々なメディアをウオッチし、その反響や影響を含めて情報発信しています」と、新聞・雑誌と同じ基準で引用していると胸を張るのだ。 だが著作権に詳しい山縣敦彦弁護士はこう指摘する。「最高裁判例では、著作権法上の『引用』として認められる要件として、〈明瞭区分性〉と〈主従関係〉を挙げています。出所を明示していても、自分の文章が〈主〉であり他人の文章が〈従〉でなければ引用は認められない。ですから引用だけで記事を構成した場合は、著作権侵害になることが濃厚です。引用要件を満たさない無断転載は原則違法であるとネットメディアはもっと自覚するべきです」 ネットメディアの現状について、ITジャーナリストの井上トシユキ氏が嘆く。「創成期であれば記事のクオリティが低くても仕方ないところはありますが、十年経った今もまったく状況は変わっていません。未だに引用記事やコピペ記事が氾濫し、おまけに捏造です。彼らには取材にコストをかけるという意識がない。報道ではなく、クリックを稼ぐためのモンキービジネス(詐欺的商法)になってしまっているのです」 サイゾー社の揖斐社長は、小誌の直撃取材に対してこう反省の弁を述べる。「記事の捏造はあってはならないことで、私自身や編集長、担当編集者の減給処分を行い、人事も含めた更なる処分も検討しています。女子高生への謝罪についてもNHKと話し合いを続けているところです。これからは記事のクオリティを上げる体制を作りたい。私自身の反省としては、ネットメディアに利益を出すことを求め過ぎたところはあったと思います」 BJ事件で剥がされたネットメディアの“化けの皮”。その信頼回復への道のりは険しそうだ。",
        " 当事者たちが所属する3社はこうコメントを寄せた。「共演者として伊野尾氏を含む複数で食事をしたことは事実です。ただ交際の事実はございません」(フジテレビ)「社員のプライベートについては、従来お答えしておりません」(TBS)「本人は、憶測を招くような軽率な行動により、関係各位に多大なご迷惑とご心配をお掛けしましたことを深くお詫びしておりました」(ジャニーズ事務所) 詳細を記録したカラー写真は「週刊文春デジタル」で12月1日(木)朝5時に公開する。",
        " 11月15日、日露経済協力のキーパーソンだったウリュカエフ経済発展相が収賄容疑で訴追された。 ウリュカエフ氏は国営石油大手、ロスネフチによる別の国営石油企業の株式取得に便宜を図った見返りに200万ドル(約2億1000万円)の賄賂を受け取ったとされるが、学者出身でリベラル派の同氏は本来、国営企業民営化を支持しており、不可解な点が多い。政権内の複雑な権力闘争に巻き込まれた模様だ。 問題は、日露首脳会談を12月15日に控えたこの時期に、プーチン大統領が逮捕、更迭を承認した点だ。ウリュカエフ氏は世耕弘成経済産業相のカウンターパートで、大統領訪日時に調印される20近い日露協力案件のロシア側責任者だった。「更迭は訪日後でもよかった。プーチン大統領が訪日への意欲を失っている証拠」(日露関係筋)という声もある。RIAノーボスチ通信によれば、ロシア捜査当局は日露経済協力を支持するドボルコビッチ副首相らリベラル派高官7人を今後訴追する可能性があるという。 経済危機でエリート層の利権が先細りする中、保守派が民営化を訴えるリベラル派を標的にし、大統領もそれを容認する構図だ。 同氏の逮捕には、トランプ米大統領候補の当選も影響しているとの見方がある。ロシアのパニア下院議員は「トランプ次期大統領は就任後、保護貿易主義を強め、グローバル化が後退することから、ロシアもトランプ路線に沿って改革・開放を放棄する」と予測している。事実なら、日本との経済協力の重要性も低下する。 プーチン大統領を「偉大なリーダー」と称えるトランプ氏の当選で、ロシアは対米関係打開を最優先に掲げる可能性があり、相対的に日本への関心が低下しかねない。10月末に来日した大統領側近のマトビエンコ上院議長は「ロシアはクリル(千島)の主権を手放さない。二島を引き渡す交渉も行われていない」などと強硬発言を繰り返した。利権闘争が保守派優勢となれば、ロシアは北方領土交渉でますます高飛車な対応を取ろう。大統領訪日を前に、逆風が強まる一方だ。"
    ]
}

いいかんじですね。記事は900個くらいあるみたいなのでこのあとぶん回してとってきます。900、データの母数としては少ないかもですけど、この後の分析の方法がとりあえず十分かなあ~って見込みなのでOKかと思ってます。また書く

Taihei lagoon

ポンプ用のモータ制御、マジで詰まりまくって色々試した結果(制御とか電子回路とかの知識が無さすぎた)TA729Pっていうモータドライバでおちついた。

最初っからこれにしとけばよかったんだけど、秋葉原の電子パーツショップ全滅してるとおもいこんでたので買いにいけなかった

今日ツイッターで見たら開店時間は短かくなってる店もあるけど、完全閉店は秋月だけっぽいので飛んで買いにいけた。都営新宿線で行くとパーツショップが近いので買うものだけ買ってさっさと帰れてとても良い

モータードライバー(TA7291P)の使い方 [Arduino]

ここを参考にした。

 

って思ってたらラズパイ燃やしてもた。(12Vをラズパイの5Vピンに接続しちゃった)あーあ。

新しいの買いたい

廉価版買ってもいいけど初心者なのでここで金額的なケチをしたらいけない気がするのでやめとく

 

とりあえずリビングでレジをしているラズパイを持って来た。microSD交換するだけなので楽。いいなこれ

モータも動かせたし、とりあえずラズパイが壊れるまえまでの復旧作業は完了できたかも

 

 

Rainbow Fax

開発の記録さすがに付けんといかんっておもって書く。

ステッピングモーターのドライバがさすがに上手く働かないので

https://www.amazon.co.jp/gp/product/B06XSBB45M/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

TB6600ってのに替えた。

前のよりゴツいし接点がねじでやるタイプだからやりやすい。

ごついので強い。実際に動いたし

 

TB6600 Stepper Motor Driver with Arduino Tutorial (3 Examples)

ここを参考にした。

https://www.amazon.co.jp/gp/product/B07MH4GYX1/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1

あとポンプモーターのためのリレーが火噴いてた。ステッピングモータ制御にもつかってる電源装置からの12Vに耐えられなかったみたい。

でもポンプモータが12V適応のやつなので明日アキバ行っていろいろ買いにいこうとおもう。

www.smartsheet.com

これに登録した。プロジェクトの管理カッチリしたい。

記録にもなりそうだし。

とりあえず明朝起き次第スケジュール作って買いものいこ

朝起きれるかは知らん

 

Bitter Engine

ラズパイでステッピングモータを動かすの、ちょっとつまりまくってる。大体の例がPythonなんだけど、できればNodeJS使いたい。とりあえずテストでPython使って回してみてから~~とか思ってたけど、ネットに転がってるPythonのサンプルコード見ながらJSに書き換えたら楽勝でしょ:ブイサイン:

 

とりあえずLチカしてみる。


qiita.com
これ参考にした。

setInterval(() => {
  gpio.setup(LED_PIN, gpio.DIR_OUT, () => {
    // LED_BLINK_DELAY_MS毎にLED ON/OFF
    gpio.write(LED_PIN, true);
    console.log("switch on")
    gpio.setup(LED_PIN, gpio.DIR_OUT, () => {
      // LED_BLINK_DELAY_MS毎にLED ON/OFF
      console.log("switch on, one more!")
      gpio.write(LED_PIN, false);
    })
  })
}, 500);

点灯した直後に消灯をいれこむことで


こんな感じにできてよさげ

JavaScript(Node.js) で sleep() アラカルト - Qiita
ふたつめのやりかたがわかりやすくてよさそう。

github.com
あとラズパイのGPIOいじるライブラリを変えた。こっちのほうがモードの切り替えとか(入出力の切り替え)いちいち設定せずに済んでよい

ステッピングモータが動いた。

let dirMode = true;
while (1) {
  for (let index = 0; index < 200; index++) {
    rpio.write(LED_PIN,rpio.HIGH)
    sleep(3);
    rpio.write(LED_PIN,rpio.LOW)
    sleep(5);
  }
  if (dirMode) {
    rpio.write(DIR_PIN,rpio.HIGH)   
    dirMode = !dirMode; 
  } else {
    rpio.write(DIR_PIN,rpio.LOW)    
    dirMode = !dirMode; 
  }
}

自力でPWM出力しようとしてる。これが正しいのかは知らん。
ArduinoとA4988でステッピングモータを回転してみる – 自作のいろいろ
これ参考にした。アルディーノ使えるんならPWM出力デフォルトでできるやろ、とか思っちゃう。知らんけど

Sweety Gear

「デフォルトの記法設定変更できますよ」っておしえられてからまだはてな記法に変えないで「だあもういちいち切り替えんのめんどうやな」ってしてる

朝とか

まじで昼夜逆転なおらん。昨日冗談混じりに「多分明日は5時くらいに起きてまうわw」って言ってたらガチで5時ちょうどに起きちゃった、かなしすぎる
まだ5時だし....大惨事って感じ。

HighwayIcecreamについて

辞書ファイル,秒で単語の追加できた。
Juliusの独自辞書を使って音声を認識させる - Qiita これ毎回参考にしてる。毎回忘れちゃうので。
追加した単語は

・いいえ
・違う
・ノー
・キャンセル
・そう
・イエス
・正解
・続行

の8個とあとテスト用に住民の名前をいくつか。「飯野」と発音がかなり似てる名字の人がもうひとつあるからうまく認識できるか心配。いっそ自分の登録名は「てん」とかにしてもいいかも。

何回かテストしてみた結果とりあえず似てる名字と違いがでるのはそんなに無かったかも

Googleスプレッドシートの読みこみできた。いいかんじ。
Node.jsでGoogle SpreadSheetsを操作してみよう。【GAS不使用】 | dotstudio
この記事がくそわかりやすい。まあでも今のところスプレッドシートに書きこむのは

  • 購入日と時間
  • 購入者
  • 金額

だけだし、GASの方に任せるのもいいかもしれない(スプレッドシートを編集するのと音声認識するロジック周りを切り離した方が色々楽そうなので)

なんかできた。一日かかったわ。スプレッドシートに書き込みができたし、キャンセル周りの処理とか作ったら一旦完成でよさそう。
あとはこれこっちからどう情報を伝えるか考えなあかんかも。やっぱりディスプレイかなあ