としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

2021年09月

DSC_3748


今更ながら10年ほど前に話題になった「もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら」(もしドラ)を読みました。

小説の内容としては青春小説なんですが、この本の特徴は野球部のマネージャーである主人公みなみがドラッカーの『マネジメント』を参考に野球部を成長させるというところです。おもしろかったので、ないようを簡単にまとめてみました。

『もしドラ』の要約

マネジメントには顧客が必要


ドラッカーはマネジメントの最初の仕事は「組織の定義付け」であると言っています。そして、組織を定義付けするために必要なものは顧客です。経営を始めるには顧客を満足させることを考えなければなりません。

みなみは野球部も組織ということに気が付き、定義付けをするにあたり「顧客は誰か」ということで悩みます。

読みながら私も顧客は誰か考えていると、応援してくれる親や観客だと思いました。

しかし、これは顧客の一部でしかありません。野球部が活動をするにあたり保護者の支援なども必要なのですが、それ以上に必要なのは野球を行う野球部員たちでした。

私は、野球部員は従業員だと考えていたのですがそもそも活動する人間がいなければ組織は成り立たないため、野球部員は従業員であり顧客であるのです。


顧客が求めるものとは


顧客が保護者、高校野球ファン、野球部員たちと定義付けできたみなみは次に、これらの顧客が求めるものは何であるのかを考えます。

みなみは顧客が求めるものは、高校野球とは切り離すことができない「感動」であると定義付けます。

確かに、毎年高校球児が甲子園などで野球をしていると多くの感動が生まれますね。

顧客が求めるものを定義付けできたことで野球部の事業は、顧客に感動を与えることだと決まります。


マーケティングとは


野球部の目指すべき姿が決まったところでみなみはマーケティングを開始します。

しかし、マーケティングをし始めるとある問題が発生します。それは、部員が求める「感動」は一人ひとり違うということです。

そこでみなみは部員一人一人と面談を行うことで部員が野球部に求めていることを正確に分析しようとします。

面接の結果、自分の実力を試すために野球をしている部員、子どもから野球をしているからなんとなく続けているだけの部員がいるなど部員によって色々な目的があることが分かりました。

顧客一人一人が何を求めているのかを知るのがマーケティングなんですね。



仕事には働きがいが必要


部員たちを分析したみなみは、生産性を向上させるために各部員に働きがいを与えます。

働きがいを与えるには、責任を持たせる必要があります。そのためには、①生産的な仕事、②フィードバック情報、③継続学習の3つの要素が不可欠です。

①生産的な仕事として新練習方法を提案して部員の士気を向上させます。

②フィードバック情報では、部員たちにランニングのタイムをメモさせたりして自己管理を行わせます。

③継続学習では、①と②を続けさせることで効果を実感させようとします。


マネージャーは専門家の通訳になれ


専門家は、知識が豊富であるからこそ専門用語などを使ってしまい従業員たちとすれ違いがおきます。これを防ぐために、マネージャーは専門家の意思を分かりやすい言葉に変更して従業員に伝える必要があります。

この物語での専門家は野球部の監督です。

みなみの野球部では、監督の意図が部員たちに伝わらず、監督と部員との間で壁が発生していました。そこでみなみは野球部のマネージャーの一人を専門かと部員との間の通訳として挟むことで意思疎通を図ろうとします。

この考えは成功して、今まで上手に活用できなかった監督の知識が部員に伝わることで、野球部はどんどん実力をつけていくことに成功しました。


従業員の強みを生かすマネジメント


従業員は人によって得意なことが異なるので、これらの強みをどう生かすかがマネージャーの腕の見せ所です。

野球部の場合、バッティングが得意な部員、守備が得意な部員、足が速い部員などで部員の得意分野を分けることができます。

各部員の強みを生かせるポジションに着かせることで、野球部の生産性はさらなる向上をみせました。


イノベーションをおこせ


新しくできた企業は、最初のうちは既存の同種の企業と同じことをしていても伸びるかもしれませんが、他の企業を越えるにはイノベーションをおこして、改革を起こす必要があります。

みなみは監督と相談して高校野球で陳腐化したものは何かを考えていると、「送りバント」と「ボール球を打たせる投球術」の2つが上がりました。

そこでみなみたちは、この2つをしない「ノーバント・ノーボール作戦」を生み出します。言葉通り、送りバントとボール球に手を出さない、ボール球を投げないという作戦です。

この作戦で従来の野球の常識を捨てて強豪校に立ち向かいます。


人事問題に取り組む


成果中心の精神を高く維持するには、成果に伴い昇進、昇給させるなどして人事に関わる意思決定をすることが重要です。

みなみは、プレイに集中したいキャプテンをキャプテンの任から降りてもらい、他の人をキャプテンとして選んだり、実力に伴う人間をレギュラーとして選出することで部員の精神を高く維持しました。

またレギュラー入りした部員の手当てをするだけではなく、レギュラー落ちした部員にもどうしてその立場に移動したのかしっかりと説明することでやる気を下げないように考慮しました。




成果こそすべての活動の目的である


仕事を行う上で過程も重要ですが、結局は成果がでないことには意味がありません。成果よりも努力を重視してしまうと、従業員は仕事のための仕事をしてしまうことになります。

そのため組織は成果のために働くことが重要です

みなみたち野球部も今まで努力を続けてきましたが、結局は大会に勝たなければ成果を出したとは言えません。


マネージャーは真摯であれ


マネージャーは従業員を管理する能力や、知識の豊富さなどが重要であると考えられがちですが、それらは後かでも学ぶことができます。

そのためドラッカーはマネージャーに最も必要なのは真摯さだと言っています。

マネージャーにとって何が正しいかだけを考えて、誰が正しいかを考えない、部下に対する真摯さが重要です。

みなみは本書を通して決して人を好き嫌いで否定することなく、正しいことだけを評価する真摯さを見せつけました。


最後に


「もしドラ」はドラッカーの『マネジメント』をどう生かしていくかが、弱小野球部で甲子園を目指すという具体例をあげて非常に分かりやすく説明している作品でした。

これから経営や会社で働くうえでマネジメントの知識を有効に生かしたいと考えている人には「本書」はうってつけの入門書だと思うのでぜひ読んでみてください。

また小説としてもありきたりな王道展開ではありますが、そういうのが好きな人は感動できる作品だと思うのでおすすめです。

みなみたち野球部が大会を勝ち進み甲子園に出場で来たか気になる人は、ぜひ本書を読んでみてください。







gensimのWord2Vecを使ってみたので、使用方法をまとめました。

今回コーパスは『極性分析できのこたけのこ戦争に決着をつける』の記事で集めたツイートのデータを使用します。小規模なコーパスなので上手くいかない可能性もありますが練習ということであまり気にしません。


Word2Vecとは


Word2Vecは大量のテキストデータを解析し、単語をベクトル化する方法です。

単語をベクトル化することで単語同士の類似度を計算したりすることができます。

今回の場合きのこの山とたけのこの里のツイートをWord2Vecを用いて分析するということできのこの山とたけのこの里はお菓子の名前という同じカテゴリなので二つの単語のベクトルは近いものになるはずです。


実行環境


  • Windows10
  • Python3.6
  • gensim3.4.0
  • MeCab(辞書はmecab-ipadic-Neologdを使用)
MeCabのインストール方法や辞書の変更方法は以下の記事にまとめています。

Python3でMeCabを動かしてみる(Windows10 64bit)

MeCabのNEologd辞書をWindows10で使う方法


gensimのインストール


gensimは以下のコマンドだけでインストールすることができます。
pip install gensim
anacondaを使っていてpipではインストールができない場合は次のコマンドを使ってください
conda install -c anaconda gensim



学習データの準備


コーパスは最初に述べた通りツイートのデータを使うのですがWord2Vecの学習を始める前に学習データを分かち書きにして単語と単語の間をスペースで区切った状態に変更する必要があります。

またWord2Vecでモデルを作成するさいは助詞、助動詞などの非自立語は除外したほうが精度の良いモデルを作成することができるため今回は名詞、形容詞、動詞以外の単語は除外します。

"たけのこの里が好きだ。" という文があった場合は "たけのこの里 好き" といった状態に変更します。

学習データの準備は以下のコードで実行しました。
# -*- coding: utf-8 -*-
# 学習データをgensimで使える型に変換

import MeCab

# テキストを名詞、形容詞、動詞を残した分かち書きに変換
def wakachi(text, file):
  tagger = MeCab.Tagger("-Ochasen -d C:\mecab-ipadic-neologd")
  node = tagger.parseToNode(text)
  while node:
    # 名詞、形容詞、動詞だけリストに追加
    if (node.feature.split(',')[0] == '名詞' or node.feature.split(',')[0] == '形容詞' or node.feature.split(',')[0] == '動詞') and node.feature.split(',')[6] != '*':
      try:
        file.write('{} '.format(node.feature.split(',')[6]))
      except:
        pass
    node = node.next
  
# tweetを読み込み
def loadtweet(filename):
  tweet = []
  with open(filename) as f:
    for i in f:
      try:
        tweet.append(i.rstrip())
      except:
        pass
    return tweet
  
def main():
  tweet = loadtweet("tweet/kinoko_tweet.txt")
  wakachi_file = "kinoko_wakachi.txt" # 書き込み先のファイル名
  
  with open(wakachi_file, 'w') as f:
    for i in tweet:
      wakachi(i, f)
      f.write('\n')

if __name__ == '__main__':
  main()
今回私はtweetを対象に行っていますがどんなコーパスを使用してもこのコードで対応できるはずです。

コード中に例外処理をいれていますがこれは文字コード関係でエラーを起こしてしまい今回はあまり厳密にデータをしなくてもいいかということで簡単に片づけています。




Word2Vecのモデル作成


Word2Vecのモデルの作成は自分で一からコードをかこうとすると結構大変ですが、gensimを使えば10行もかかりませんでした。

モデルの作成は以下のコードで行いました。
# -*- coding: utf-8 -*-
# Word2Vecのモデルを作成
from gensim.models import word2vec

data = word2vec.LineSentence("kinoko_wakachi.txt")
# モデルを作成
model = word2vec.Word2Vec(data, size=200, window=10, hs=1, min_count=2, sg=1)
# モデルを保存
model.save('kinoko.model')
モデルを作成するWord2Vecメソッドのオプションでは、生成するベクトルの次元数や、単語の最大距離を設定することができます。

sizeは生成するベクトルの次元数です。今回は200次元にしています。
windowは単語の最大距離です。今回は10にしています。
hsは学習にsoftmax関数を使うかどうかです。(0の場合は使わない、0以外の値では使う)
min_countはこの値より出現回数の少ない単語を無視します。
sgは学習アルゴリズムの設定です(0の場合はCBOW、1の場合はskip-gram)。今回は何かの論文でskip-gramの方が良い結果になりやすいと見た記憶があるのでskip-gramを使いました。


生成したWord2Vecのモデルを使ってみる


modelの読み込み

model = word2vec.Word2vec.load('kinoko.model')

単語のベクトルの確認

# きのこの山のベクトルを確認
word_vector = model.wv["きのこの山"]

似た単語を列挙

# きのこの山と類似している単語の確認
similar_words = model.wv.most_similar(positive=["きのこの山"], topn=9)
print(similar_words)
[('満足', 0.6623457670211792), ('NI', 0.6556951999664307), ('きのこ派', 0.6542500257492065), ('最高かよ', 0.6375962495803833), ('アイス', 0.6262195110321045), ('4m', 0.6219021081924438), ('ファン', 0.6202322244644165), ('永遠', 0.6201416850090027), ('ムース', 0.619083821773529)]
きのこの山に類似している単語にたけのこの里がないのは意外でした。アイスやムースなどの他の食べ物があるため学習データを増やせばたけのこの里も類似している単語として出現するのかもしれません。

語句の線形計算

# 線形計算(きのこの山-きのこ=???)
print(model.most_similar(positive=['きのこの山'], negative=['きのこ'])[0])
('木村', 0.4005602300167084)
"きのこの山-きのこ" をしてみると "木村" という謎の結果になりました。(なにがでたら正解かは分からないが...)

positiveに加算する単語、negativeに減算する単語を入れます。"父-男+女" のように複数の単語を用いた計算を行うことができます。

色々な語句の線形計算を行ってみると楽しそうな気がします。


最後に


この記事ではgensimを使ってWord2Vecのモデルを作成しました。

今回は小規模なコーパスを使ってモデルを作成しましたが、次することがあればもう少し大きなコーパスを使ってモデルを作成して文の類似度を測るなど応用した方法を実行してみようと思います。




Python3でtweetの形態素解析を行うためにWindows10でMeCabの辞書をNEologd辞書に変更しようとしたら思いのほかてこずったので変更手順をまとめました。

MeCabをインストールしていることを前提として進めるのでまだインストールしていない方は下の記事を参考にしてください。




NEologd辞書とは


Neologd辞書とは佐藤敏紀(@overlast)が開発しているオープンソースのMeCabと共に使う単語分かち書き辞書です。

特徴として週二回以上という頻繁なペースで更新されているため新語や固有表現に強く、語彙数が多くなっています。

そのためSNSなどの新語が多い環境で自然言語処理を行う際一般的にNeologd辞書が使われています。



NEologd辞書のインストール

動作環境

本記事における動作環境は下記の通りになります。
  • Windows10 Home
  • Python 3.6.7


コマンドプロンプトでLinuxコマンドをたたけるようにする


Linuxコマンドを使ってneologd辞書をインストールしていくので最初にコマンドプロンプトでLinuxコマンドを入力できるようにしていきます。

1. Windows Subsystem for Linuxを有効にする


コントロールパネル > プログラム
neologd1

Windowsの機能の有効化または無効化

neologd2

Windows Subsystem for Linuxにチェックして再起動

neologd3

2. Ubuntuをインストール


Windows Subsystem for Linuxを有効にしたら次はMicrosoft StoreからUbuntuをインストールします。

Microsoft Storeを起動してUbuntuと検索したら下記の画面がでるので入手をクリックしてください。
neologd4

3. ユーザ登録


インストールが完了したらUbuntuを起動してください。そうするとユーザ名とパスワードを入力するように指示がでますのでにゅうりょくしてください。

4. パッケージを最新化する


ユーザ登録ができたらパッケージを最新化するために下記のコマンドを入力してください。

sudo apt update
sudo apt upgrade





NEologdをインストール

1. ビルドに必要なものをインストール


下記のコマンドを入力してビルドに必要なものをインストールします。

sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install make

2. UbuntuでNeologdをインストール

git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
sudo bin/install-mecab-ipadic-neologd

3. NEologdをWindowsにコピーする

cd ..
sudo cp -R /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/  /mnt/c/

コピー先は各自好みで指定してください。


NEologdがWindows10で使えるか確認


上記の作業が全て完了したらWindowsで使えるか確認します。

下記のコードが動いたら正しくインストールできています。

import MeCab

mecab = MeCab.Tagger("-Ochasen -d C:\mecab-ipadic-neologd")
print(mecab.parse("進撃の巨人の発売日だ"))

実行結果は以下の通りになります。

neologd5

ちなみに最初からMeCabに入っている辞書を使った場合の結果は以下の通りになります。

neologd6






DSC_3381

朝井リョウさんの『世にも奇妙な君物語』が文庫化していたのでさっそく購入してみました。

本作は「世にも奇妙な物語」の大ファンだという朝井さんが、番組での映像化を目指して書かれた短編集です。

全部で五編の奇妙な話が詰め込まれていますがどの物語もオチが絶妙でとてもおもしろかったです。

以下感想になりますがネタバレを含むので未読の方は注意してください。




『世にも奇妙な君物語』のあらすじ


異様な世界観。複数の伏線。先の読めない展開。想像を超えた結末と、それに続く恐怖。もしこれらが好物でしたら、これはあなたのための物語です。待ち受ける「意外な真相」に、心の準備をお願いします。各話読み味は異なりますが、決して最後まで気を抜かずに——では始めましょう。





感想(ネタバレあり)

シェアハウさない


シェアハウスの記事を書こうとしていたライターの浩子がシェアハウスの住民たちと接していくうちに住人に少し不信感を持ち始める…。

浩子は「シェアハウスが本当にシェアしているものはなんのか」という記事を書くために密かに住人たちがシェアしているものを探そうとしていたがなかなか見つけることができなかった。

最後の最後にシェアしているものの正体を見つけるがそれは異常性癖者たちがお互いの異常な性衝動をみはりあうことで抑止するというものだった。

物語の中盤で浩子が昔犯罪にあったことからなんとなく犯罪者の集団がシェアしている家だとは分かっていたが、犯罪を隠ぺいするための家だと思っていたので、お互いの性衝動を抑えあうために住んでいたのには驚きだった。

物語は悲惨な結末で終わってしまうが実に世にも奇妙な物語っぽいないようで本書の一作目にふさわしい作品となっていた。


リア充裁判


コミュニケーション能力が高いリア充が本当に正しいのが疑問を持っている知子は、ある日コミュニケーション能力をはかる裁判に招待される。そこで裁判官に批判されるリア充たちを見て知子は自分が正しかったと確信するのだが…。


オチが絶妙すぎる話でした。

主人公の知子が考えていた理想のオチで終わるのかと思いきや、まさかその世界が主人公の描く漫画の世界だっととは…。しかも知子が非リア充でコミュニケーション能力がなく大学内で唯一就職活動に失敗している人間だという。

物語を読んでいる途中はコミュニケーション能力がない人間をなくそうとする国策は間違っているんだと思わされるんですが、最後まで読み切るとけっきょくはどんなことをするにもコミュニケーション能力って大切なんだなと感じさせられました。

コミュニケーション能力がなくても成功をおさめて認められている人間って現実世界でも確かにほとんどいないなと思わされる物語だった。




立て!金次郎


親からの評価を気にする幼稚園で働く孝次郎。そんな幼稚園の現状がおかしいと感じる考次郎は園の考えに背き、自分の考えに従って行動した結果、親からの評価につながったのだが…。


物語終盤まで来ると今回の物語はハッピーエンドで終わりそうだなと思ったのですが、この作品も最後の最後にまさかのどんでん返しが待ち構えていました。

オチの内容は、保護者が事前に褒める先生やいじめる先生を決めておいて幼稚園の先生を絶妙にコントロールするというものでした。

どんでんがえしがなければ世にも奇妙な要素がないんですけど、このオチを読んだときは衝撃的でした。孝次郎の努力のおかげで上手くいったと思ったのにそれをくつがえされてしまいました。

もしかしたら現実世界のモンスターペアレントのなかにも教師をコントロールするためにクレームを入れている人がいるのかもしれませんね…。


13.5文字しか集中して読めな


インタネットニュース記事を書くライターとして働く香織。自分の仕事に誇りを持ち、尊敬する上司を持ち、自分の息子からも憧れられており順風満帆な生活を送っているのだが…。


まずタイトルの文字数が13.5文字(半角は0.5文字とする)っていうがいいですね。

ネットニュースの記事に対する朝井リョウさんなりの批判が入っている作品でした。ネットニュースは新聞と違って紙面に限りがないのでいくらでも記事数が増やせるがどうでもいい内容の記事も量産されているという朝井リョウさんのネットニュースに対する批判が入っている作品でした。

最後に息子が授業参観で母親の浮気調査と浮気の様子を記事にしていましたが母親としては衝撃的ですよね。息子は母に憧れて母の真似事をしているんですが自分の浮気がばれていたとは…。

息子の成長を素直に喜べなさそうだ。




脇役バトルロワイアル


主演オーディションの最終選考に残った淳平。最終オーディションが行われる部屋に入るとそこには自分を含めて普段は脇役ばかり演じる役者たちがいた。不思議なオーディションに合格して淳平は主演になれたのか。

今までの四話に脇役として登場した役者たちが集められていて本当にテレビの世にも奇妙な物語を見ているかのように読める作品でした。登場人物の名前も実際の役者によせられており誰が誰なのか想像しやすかったです。

場面を説明するなどの脇役的な行動をしたら失格となるというのも秀逸で、朝井リョウさんが脇役の行動をよく分析しているのが分かる作品でした。

周りの脇役たちがみんないなくなり淳平が合格したと思ったら最後の最後に真の主役が現れるというのに笑わされてしまいました。

五編の中で一番笑える作品となっています。


最後に


皆さんはどの物語が一番好きですか?私は『立て!金次郎』が一番好きです。

朝井リョウさんの描く『世にも奇妙な君物語』がいつか実際に世にも奇妙な物語で映像化されてほしいですね。





以前Windowsの環境でPythonでMeCabを使おうと思ったら上手くいかず諦めてUbuntuを使っていたのですが、今回久しぶりに挑戦してみるとあっさりと使うことができたので環境構築方法をまとめました。


動作環境


本記事における動作環境は下記の通りになります。
  • Windows10 Home
  • anaconda
  • Python 3.6.7
今回はanacondaを使っていますがanacondaを使ってなくても手順通り進めればインストールすることができます。



MeCab(64bit版)のインストール

1. MeCab(64bit版)のインストーラのダウンロード


MeCabのインストーラは下記のページからダウンロードできます。




2. mecab-0.996.exeを実行する


インストーラをダウンロードできたらmecab-0.996.exeを実行してインストールしていきましょう。



環境変数の設定


MeCabを無事インストールすることができたら次は環境変数の設定を行います。

1. 環境変数に「MeCabのインストール先\bin」を設定する


インストール先を特に指定せずデフォルトの設定でインストールしたのなら下記の例と同じもので問題ありません。

環境変数の例:C:\Program Files\MeCab\bin


2. 環境変数が正しく通せているか確認する


環境変数を設定できたら設定を正しく行えているか確認します。

コマンドプロンプトを起動してMeCabと入力した後に好きな文章を入力して形態素解析が実行されたら正しく環境変数を設定できています。

この際文字化けがおきますがそれはコマンドプロンプトがUTF-8に対応していないのが原因で起きるので気にしなくて大丈夫です。

MeCab1




mecab-python-0.996のセットアップ

1. mecab-python-0.996.tarのダウンロード


mecab-python-0996.tarは下記のページのperl/ruby/python/java バインディングの下にあるダウンロードリンクからダウンロードができます。

ダウンロードの際様々なバージョンのものがありますが0.996のものをダウンロードしてください。


2. mecab-python-0.996.tarを解凍する


mecab-python-0.996.tarをダウンロードすることができたら好きな場所に解凍してください。


3. setup.pyの編集


mecab-python-0.996のフォルダ内にあるsetup.pyはpython2.xxに合わせて書かれているものなのでpython3で利用できるように中身を少し書き換える必要があります。

下記に編集後のコードを乗せておくのでこれをそのままコピーしたらほぼほぼ大丈夫です。

ただMeCabのインストール先をデフォルトとは別の場所にした場合その部分だけインストール先に合わせて修正してください。

#!/usr/bin/env python

from distutils.core import setup,Extension,os

setup(name = "mecab-python",
    version = '0.996',
    py_modules=["MeCab"],
    ext_modules = [
        Extension("_MeCab",
            ["MeCab_wrap.cxx",],
            include_dirs=[r'C:\Program Files\MeCab\sdk'],
            library_dirs=[r'C:\Program Files\MeCab\sdk'],
            libraries=['libmecab'])
    ]
)


4. ビルドとインストール


Anaconda Promptを起動してmecab-python-0.996のフォルダに移動してください。

移動できたら下記のコマンドを入力してビルドしてください。

python setup.py build

ビルドができたら下記のコマンドを入力してインストールしてください。

python setup.py install


5. 実行確認


インストールができたら最後に実行できるか確認を行います。

下記のコードを実行して形態素解析の結果がかえってきたら作業は終了です。

import MeCab
mecab = MeCab.Tagger("-Ochasen")
print(mecab.parse("すもももももももものうち"))

実行結果は下記の通りになります。

MeCab2



最後に


環境を構築中にVisual Studioをインストールしていない場合はそれ関連のエラーが出るかもしれませんが適宜対応してください。

もし何か分からないことがあればコメントをもらえれば返しますのでコメントしてください。


↑このページのトップヘ