こんにちは、チナパです!

現在HumAInでやって見ている実験の一つについてシェアします。目的は「誰に聞けばいいのかが分かるアルゴリズム」です。まだ途中作業ではありますが、どんな理論があって、どんな結果が出るのかを説明します。

そもそもどうしてこれが重要かといいますか?

組織は人の集まりです。その組織の知識の大半はまだ暗黙知であります。研究によっては7割~9割の予測があります。でも自分の経験でも見てください。ドキュメントだけを読むか、その作った人と話すかどっちの方でよりわかりますか?

ドキュメントもとても重要ですが、人が他の人を持っている知識を速やかに取得できる環境を作るのが大事だと思います。

以下の内容はチャットデータを分析して、過去データの元誰が何について詳しいのかを理解した上、何かの話題に関して誰に聞けば分かるのかのを教えてくれるロジックについて軽く説明します。

こんな感じになります

・元データについて
・単語・時間分析で人の関係性を判定
・HumAIn/ゴーリストの環境での結果のデモ

になります。

元データについて

弊社でチャットワークを主に使っていて、前々から「日報」の文化があります。社員のみなさんは日報で現在やっていること・これからやること、などなどを共有しています。例えば、以下のような内容で投稿があります。(共有しない方がいい物は記号で置き換えてます)

ご覧の通りですが、「構造化」はされてはないが割と綺麗にトピックスが書かれています。そのため実験台としてよいかなと判断しました。このような日報は毎日50名ほどが投稿しているのでまーまーデータの量が集まってきました。

チャットワークのメッセージ歴をダウンロードして、日報っぽいメッセージだけを一旦元データとして使っています。

単語・時間分析で関係する人の判定

これを達成するのに、TF-IDFと内製のタイムシリーズ分析を利用しています。

TFIDFの技術的な面は前にも投稿がありましたので、気になる方は参考してください。コンセプトだけ説明するとある「単語」に対してある「ドキュメント」(ここはメッセージ)はどれぐらい重要なのかを測るアルゴリズムです。

今回の目的「誰に聞けばいいのかが分かるアルゴリズム」のためには一番関係の高いドキュメントではなく、一番関係性の高い「メッセージ投稿者」を見つける必要があります。

よくある考え方ですと、「話す頻度が一番高い人」で選ぶか、「最近話している人」を選ぶこともあります。どっちも問題があって、HumAInではドキュメントのTF-IDFの分析の上で、「各単語に関係性が高い日報を最近&継続的に書いている人」を判定してみています。その分析のコンセプトが以下のイメージです。

Y軸が関係性、X軸が時間です。このようなグラフを格単語と人の組み合わせで作っています。

魔法の書がありました!

ゴーリストのチナパです!さてさて、今回は面白いのがありますよ〜

タイトルがちょっとハリーポッターっぽくて失礼します、機械学習の記事です。

機械学習というと、ビッグデータが思いつくと思います。
大量のデータで数日感学習させたり…

でも一つだけ問題があります

ゴーリストのチナパです!

この度は技術的な記事ではなく、「AIに任せましょう」などを聞くときに、実際に何が起きているのかの直感を作るための記事です。(プログラミングなしです)

データでモデルを学習しそして分類の判断を行う時に、何かの規則を作ってから判断しているのが事実です。複雑な問題であるほど人間の頭で想像しにくくなるかも知れませんが、直感を作ることはできます。

りんごが…左!(元: Public Domain Pictures

簡単な問題でやってみよう

この度は https://playground.tensorflow.org, という実験できる場所から始めましょう。ここでは、ノープログラミングでニューラルネットと遊べます。

今日は、チナパです!

先日、Word2vecを利用して、単語から数字のための辞書を作成してみました。その続きで、Googleが最近リリースした「bert」(Bidirectional Encoder Representations from Transformers)を利用してみましょう。

これからの私

Bertとは?

まずはそもそもこれは何なのか、なんですごいのかを説明します。

現在までの自然言語処理の技術が文章を読みながら、今までの言葉からコンテキストを理解して、順番での次の言葉の意味を今までの言葉によってのコンテキストで影響されるような技術が代表的でした …

こんにちは、皆さん。ゴーリストのチナパです!

This is me, apparently.

こういうキャラらしいです。

以前はこちら
http://developers.goalist.co.jp/entry/2018/11/16/150000
の辺りに顔の気持ちのを機械学習で当ててみるような記事もありますが、
この度は、顔の気持ちではなく、言葉の気持ちについての記事です。

文書の気持ちを理解するためにはまずは言葉の気持ちを理解しないといけません。今日はセンチメント分析によく利用される「辞書」のデータを調べてみます。

こちらの辞書を使わせていただいてます。

http://www.lr.pi.titech.ac.jp/\~takamura/pubs/pn\_ja.dic

同じく英語の辞書もありましたので、そちらもみてみたいです!

http://www.lr.pi.titech.ac.jp/\~takamura/pubs/pn\_en.dic

こちらの辞書では言葉、ふりがな、品詞、と 1から-1までの数字があります。
最後の数字の方は「ポジティブ性」や「ネガティブ性」を表そうとしてます。では、中身はどうなのかを調べてみましょう!

まずは開く

必要なインポートは以下

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

先ほどのurlでダウンロードし、Pythonに入れておきましょう。

english_words = pd.read_csv(en_dict_path, sep=’:’, [‘words’, ‘type’, ‘score’])
jp_words = pd.read_csv(jp_dict_path, sep=’:’, names=[‘words’, ‘reading’, ‘type’, ‘score’], header=None)

なんとなく何が入っているのかをみてみましょう。

print(jp_words.type.unique())
# output: => `[‘動詞’ ‘形容詞’ ‘名詞’ ‘副詞’ ‘助動詞’]`
`print(jp_words.groupby(‘type’).type.count())`
# =>
# type
# 副詞 1207
# 助動詞 2
# 動詞 4252
# 名詞 48999
# 形容詞 665

Pandasの力で割と簡単にできますね。つまり、圧倒的に名詞が多くて、助動詞は無視できそうですね。

グラッフを描こう!

これで、項目名も設定されます。

sns.set(style=’ticks’, palette=’Set2')
sns.despine()

そして、グラフが綺麗に出るような設定をしました。

では全体のデータの偏りなどをみてみましょう。

sns.distplot(jp_words.score)

チナパです!
ちょっと久しぶりに機械学習に本格できるようになりましたので、大好きなところから始め、論文を読んでました。
そこで、皆さんにもシェアしたいのがありましてーーーここ!

A few useful things to know about machine learning — Pedro Domingos
https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf

とシェアしたら、「英語のハードルが!!」と言われそうでしたので、こうして日本語でまとめます!(優しいでしょう?)

分類系の機械学習(分類器? 難しい日本語だな。クラシファイアの種類です!)に集中していますが、とりあえず始めましょう。

学ぶ者(アルゴリズムね)の3つの部分

こんな感じです!

機械学習がとても大きな箱です。その中にあるそれぞれの手段、技術などはどう分担すればよいのでしょうかとずっと思っていたところで、この論文で綺麗にまとめられました。

「機械学習 = Deep Learning = Neural Network」と思う方(昔の私)もいるかもしれないが、実際はこんな感じです。

表現

分類器(クラシファイア君)を作るためには、コンピュータが理解できる言語で作られた何らかの形を選択する必要があります。これはクラシファイア君の「表現」と言われます。
ニューラルネットワークはもしかして一番有名な表現かもしれません、つまり

Sharat Chinnapa

Programmer, writer, dancer, learning how to make the world a better place at HumAIn.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store