63’s blog

都内のSEのブログです(*‘ω‘ *)技術は好きですが仕事は嫌いです。

Tfidfvectorizerの簡単な使い方(tf idf)

入門 自然言語処理


tfidfvectorizerとは機械学習で有名なsk-learnライブラリに入っているクラスです(python)

これの簡単な使い方をまとめておきます。

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vect = TfidfVectorizer()
X_tfidf = tfidf_vect.fit_transform(corpus)

基本はこれです。corpusというリストに文章を格納する形になります。
例えば、

corpus=["This is a dog.","Hello World!","This is a cat."]

めっちゃ適当でごめんなさい笑
このように各文章が格納されている形になっています。


次にそれぞれのtfidf値を見つけていきます。

X_tfidf.toarray()

これを使うことで各単語のtfidf値がわかります。
また、各単語を確認したいときには

tfidf_vect.get_feature_names()

これを使います。これで基本的にtfidf値が算出できます。


次にTfidfvectorizerの代表的なパラメータの確認をしていきます。


○max_features
tfidf値を表示する単語数を指定します。tfidf値が高い順にとっていきます。

○min_df(①0~1,②整数)
各単語において①使用されている文章の割合、または②使用されている文章数がパラメータ以下の単語を排除します。あまりにも使用されていない単語は排除するという考えです。

○max_df
min_dfの逆です。あまりにも出現している単語は排除します。

○sublinear_tf(=True,False)
idf値に1を足すかどうかです。


このtfidfvectorizerはすぐに値を出すのにはかなり便利ではありますが、
あんまり良くないところもあります(´;ω;`)

①tfidf値が1を超えるときでもtfidf値を1として算出する
②numpyを使用しているので、メモリを食う→早く算出したいのなら便利だけど、データ数が多いと死ぬ(´;ω;`)


多少の弱点はあれど、簡単なニュースぐらいだったらかなり楽に解析できます(^O^)
ちなみに弱点②に関しては計算速度は下がりますが、メモリが食うことが問題であるなら自分でプログラムを組んだ方が解決できました。

自分のメモ、何をしようかなと思った

最近アクティビティにはまっていますヽ(´▽`)/
夏ということで運動したくなってきたことがきっかけですね
(本当は夏休みですることがなくいつもより暇になったから…研究もあって暇じゃなかった気もするが…)
ちなみに最近は筋トレにはまっています(^O^)
運動しないと痩せるタイプですので笑

夏休みを満喫していますが、最近では周囲の人たちがみんな進路や将来について考えていたりします
それをみてちょっと焦ってたりもします笑

もし友人が見たらそんなことないだろうと言うかもしれませんが、
実は結構本気で悩んでいます

正直、就活も決まって、彼女もいて、今も楽しく生きていて、なにも問題ないようにも思えるのですが、これだからこそ、将来が見えすぎてしまいました…

就職をして、30くらいで結婚して、そのうち転職なんかもして、すきな趣味をしたりして、いろんな人と話して楽しいことをひたすらしている…

そんな普通も十分楽しいです!楽しく生きていくと考えていた自分がいた時期もいて、たしかに実現できそうだけど、なんだか足りない気がして、でも何が欲しいのかわからなくなって…

というわけでなんでこんなことを考えるようになったのか考えました。その結果、物足りなくなったからだと思いました。誰かのやっていることを羨ましく思ったりすることで自分と比べて劣等感を感じたりするのかな?って思いました。

というわけで人を羨ましく思ったらその瞬間やってやろうと思いました!
また、考えられるときには自分は人生をかけて何をやりとげられるのか!
を考えていきたいと思います!

これは完全に自己満足な記事ですが、本気で生きていこうという意思表示です!

何をするにもマジでやって、人の何倍も充実した人生送って、本当に恩返ししたい人に恩返ししまくりたいと思う!

僕のやりたいことは上記のようなことです。そのために何ができるのか考えていきます。
時々自分でこの記事見ないといけないですね(´∩ω∩`)笑

またそのうち更新します笑

モチベ関係なしに頑張る方法

SNSの弊害が辛すぎてめんどくさいと感じている今日この頃…正直めちゃくちゃ勉強できる機会を得るのもSNSだったりするのでどうしようもないんですが笑 
…一度でいいからモテてみたい笑


最近、バイト先の生徒でモチベーションが下がってきたという声をとても聞きます。何をいっちょまえに言ってるんだと毎回思いますけどね(。-∀-)

といっても気持ちは分かります。どう頑張っても一年間ずっと頑張ることなんか不可能に近いと思う人もいれば、逆に一年くらいなら余裕と思っている人がいます。

この2種類の人間の違いはなんでしょうか…?(^ム^)


主観的な意見かもしれませんが、僕はどちらも経験したことがあります。大学受験の際の現役の時と宅浪の時です。前者が現役で、後者が宅浪です。ちなみに宅浪とは予備校に通わずに家で浪人です。つまり自己完結型の浪人です。

現役の時は「周りが勉強しているからやる」、「今まで受験で失敗したことないからどうせなんとかなる」といった考えを持ち、このような気持ちの中で勉強してきました。
当然この考えの中で勉強していると「早く終わらないかな?」など受験に対して辛い印象しかない上に時間がないという自覚もないのです。

逆に宅浪の時のことを考えると、ずっと勉強に対して意欲的でした。なぜかというと受験に対してプラス面しか見ていなかったからです。正確にいうと受験のプラス面がマイナス面をはるかに上回っていたのです。これに至ったのは以前投稿したブログの「どうやって?」と自問自答することで解決してきました。

また、宅浪時に現役の時と違うのは一年間のやることをすべてあらかじめ決めてから勉強したことです。つまりスケジュールです。これが決まっていると一年間で足りない勉強量となるのでモチベが下がっていようが上がっていようが「やるしかない!」と思うくらいの勉強量になっているので、やるしかないんです。つまりモチベは関係なくなります。もちろん、高いことに越したことはありませんが、低かろうがやらなくていい理由にはならないので頑張るしかないのです。ちなみにこのスケジュールの立て方は「どうやって?」と自問自答するとした以前のブログを参考にしてください。


まとめると…
モチベが下がるなら、その行動に対していい印象を持つこと、スケジュールを決めておくこと。
この2つをしっかり行動することで、モチベを下げずに行動し、目標を達成することができるかと思いますヽ(´▽`)/

いろいろ大変なことはあると思いますが、頑張りましょう!笑

Pythonの内包表記(コンプリヘンション)

なかなか卒業研究というのは何をしたらいいのかわからないもんですね(。-∀-)

先生に許可を取ってないからこのまま進めていいのかもよく分からず…w

今は仕方なく関連研究であったり、今後使いそうな技術を活用できるように先にコードを打っていたりと先がしっかりしていないのに進めちゃってます笑

そんなときにもっとコードを綺麗に書きたくなりました
そこで今回は内包表記(コンプリヘンション)についてです。

内包表記って何?って人もたくさんいると思います。もし、大学の授業だけで習っただけだと関わらない可能性もあります(普通に習ったわ!って場合ごめんなさい…)

内包表記とはfor文でリストを作るときにスマートに作る方法です。

例えば以下のようにlistという0から9のリストを作るとします。

list=[]
for i in range(10):
     list.append(i)

これをもっとスマートに書こうというのが内包表記です。実際に以下のように書いていきます。

list=[i for i in range(10)]

これで上の数行のものと一緒になります。
実際これは慣れるまではわかりづらいと思います。
[]の中の最初の変数(ここではi)をappendしていくイメージです。

もっとこれを応用したのももあります。
入れ子構造にしたり、if文で条件を付けることも可能です。

・入れ子構造

for i in range(10):
  for j in range(5):
     list.append((i,j))

これを内包表記で書くと

list=[(i,j) for i in range(10) for j in range(5)]


・if文を使った条件つき

for i in range(10):
   if  i % 2 ==0:
      list.append(i)

これも内包表記で書くと…

list=[i for i in range(10) if i % 2 ==0]

となります。

正直最初はわかりづらいと思いますがこれをマスターするとほんとに行数が変わってきます。
ただ、誰かと協力しながら作るときにはわかりにくいコードになってしまうかもしれないので、それぞれレベルに合わせて作っていくのが大切ですね

PythonのListの活用法・注意点

久々にブログを書きます。正直、就活終わって時間なんてたくさんあるだろって思ってました←
意外と大学4年って忙しい…
研究ならまだしもゼミが一番きつくなっているのが意味がわからない…
そしてゼミの内容もわからない…笑

とりあえずやってみて、自分でもちょいちょい擬似コードを実際に動かしてみたりと時々プログラミングができるのが最近は嬉しいですヽ(´▽`)/
そんな時に機械学習の分野なのでPythonを使っているのですが、

リストを使いこなすのがむずかしい!!

正確に言うとリストを使う方法がありすぎて頭の中で全然整理できていません笑
なので、今回はPythonのリストを使う方法をまとめていきたいと思います!



○リストの共通の宣言パターン

list=[]

このように宣言することで空のリストができます。

○リストの宣言パターン①

list=n*[0] #一次元
list=n*[m*[0]]  #二次元

ここで注意点です!
この宣言の仕方だと参照型のリストの宣言方法なので、数値を代入しようとすると他の配列まで同じように操作されます。
ex.list=2*[3*[0]]
list=[[0,0,0],[0,0,0]]

list[0][1]=1
list=[[0,1,0],[0,1,0]]

○リストの宣言パターン②

list=[[0 for i in range(m)] for j in range(n)]  #二次元

こうすることによってさっきの注意点が解消されます!
ex. list=[[0 for i in range(2)] for j in range(3)]
list=[[0,0],[0,0],[0,0]]

list[0][1]=3
list=[0,3],[0,0],[0,0]]

この宣言パターンなら0を2回appendしたリストを3回appendしたことと同義なので参照型にならず、別々に扱える。

とりあえず、今回はここまで!
numpyを使ったリストもまとめたらアップしようと思います!

圧迫面接があっても就活を楽しめる方法

まだまだ就活をしていますが、結構前向きにできていると思います。
面接をしていて自分の強みだとかやってきたことを伝えると褒めてくれる人もたくさんいます。今のところ、どこに就職を決めるかはまだ不安ですが、就活で面接が嫌だと思ったことは一度もありません。

そこで今回はここまで私が前向きに就活を行えている理由でも考えてみますヽ(´▽`)/

なぜ、前向きに就活ができているのか?

考えられる答えとして

  • 面接が嫌いじゃない
  • 周りの友達がピリピリしていない
  • 内定を持っている


こんなのが簡単に挙げられました。

もし今、就活に対してネガティブ人はこれらが欠落しているのではないかと考えられます。
「周りの友達がピリピリしていない」と自分の環境が反対なのが原因ならもはや就活が終わるまで連絡を取らないことで解決しましょう。
「内定を持っている」という状況でないからネガティブな人はふさぎ込んでしまう前にとりあえず応募しまくりましょう。


さて、本題です。(語りたかったところ)
「面接が嫌じゃない」なぜこのように考えられるかというと単純に人に自分のしてきたことを自慢するのが好きだからです。←

また、自分の意見を主張するのが好きなのです。

ここで面接が嫌になってしまう原因として自分の意見を否定される時があるからだと思います。さらにそれに対してなにも言い返せないと自己嫌悪になってしまうのです。

だからこれを解決しましょう!

これを解決する方法は自分の意見に自信を持つことです!

もし反対意見がきてもそれを踏まえても自分の意見が正しいと思い込んでおけば主張を大切にした反論が自然と浮かんでくるはずです。

最初は大変だと思います(^_^;)
ですが、面接を重ねていくうちに自然と言葉が出てくるようになります。なので、あとは練習あるのみです!就活は大変ですが、頑張りましょう!


自分の意見がすべて正しいと思うこと

対話でのロジカルシンキング

学校の課題と就活が忙しい今日この頃…
ようやく学校の課題の山場が超えた?のかもしれないのでちょっとメモ程度に書いておきます(^O^)

ロジカルシンキングを人と話すときに用いる方法を記します。


まずロジカルシンキングとはそのまま論理的思考のことであるのですが、これができるとなんと人を説得するときに理詰めができるので説得力が生まれます。
人からの相談を受けて適切な答えが返せるようになります。

最初から論理的に答えることはできないと思うので、まずは紙に書いてみましょう!
まず、質問を書いてそれに対する答えをとりあえず何個か見てみましょう!

ex.どうやったら頭がよくなるか?
・勉強する
・計画を立てる
スマホを見る時間を短くする

このように書くことで、さらに勉強をするにはどうしたらいいか?計画を立てるのにはどうしたらいいか?などさらに深く考えていくことで自身でも思ってもなかった答えが出てくることがあります!


さらにこれを人とのコミュニケーションにおいて使っていきます!

誰とコミュニケーションをとるにしてもその人は何かしらの目的をもってコミュニケーションをとります。
その時に「相手がなにを目的としているのか」を先のロジカルシンキングの疑問にしていきます。

こうすることで相手が相談してくる場合であれば、本当に解決法を求めているのか、後押しして欲しいだけなのか、などいろいろ予測することができ、なにを言えばいいのかわかります。


これで私は話しやすいだとか相談しやすいだとか言われるようになり、誰とでも仲良くなれるようになりましたヽ(´▽`)/