あのねノート

せんせいあのね、パソコンで字が書けるようになったよ

「エルネスト」を観ました

とても久しぶりにブログを書いています。昨日久しぶりに映画を観たのでそのことについて書きます。
過去の記事を遡ってみると前に映画を観たのは半年以上前のラ・ラ・ランドかなと思ったのですが、先月に友人と「君の膵臓をたべたい」を観に行ったのを思い出したのでちょうど1ヶ月ぶりぐらいに映画を観たことになるようです。

「君の膵臓をたべたい」については、鑑賞した日の日記に感想が残っていたのでスクリーンショットを載せておきます。わたし個人としてはあまり好きにはなれなかったんだけど、いいお話ではあったんだと思います。わたしがあのお話に憧れを持てなかっただけだろうと思いました。(まだ上映しているかはわからないのですが、ネタバレがあるので気になる人は見ないでください)
f:id:momo_moemoe:20171018124348j:plain

「エルネスト」は、医学生としてキューバに留学した際にチェ・ゲバラと出会って故郷ボリビアの革命に身を投じることとなる実在の日系ボリビア人フレディの物語です。日本とキューバの共作映画だそうです。
映画はチェ・ゲバラが広島を訪れるシーンから始まります。チェは原爆資料館の写真を熱心に見たあと「日本は米国にこんなにひどいことをされたのに、どうして怒らないんだ」と問います(映画の中盤で、チェの原動力は怒りであるということが語られます)。付き添いの日本人は何も答えることができません。わたしも映画を観たあと考えてみたのですが、どうしてもわかりませんでした。(原爆慰霊碑の「過ちは繰り返しませぬから」の主語がないのはなぜだという問いも投げかけられました。なぜなのか、主語はなんなのか、難しい…)
オダギリジョー演じる日系ボリビア人のフレディは、医者になるためにキューバに留学してきます。日本から移住した父親の事業が成功したため恵まれた生活をしていたフレディは、病気の貧しい住民たちに同情して薬を渡したり、腐敗した役人にたてついたりしていたようです。そんなフレディは革命後のキューバで革命の思想の影響を受けてボリビアのために戦うことになります。
わたしは歴史のことや政治思想のことに詳しくないのでそのあたりのことはよくわからないのですが、苦しむ民衆たちのことを自分のことのように思い、為政者への怒りを原動力として戦おうとする登場人物たちの思いはとてもまっすぐに感じました。
大学の第二外国語としてスペイン語を少し勉強したので、ほんの少しだけ知ってる言葉が聞き取れたりするのはおもしろかったです。オダギリジョーさんは映画の中で日系ボリビア人としてボリビア訛りのスペイン語を全編通して話しているのはとてもすごかったです。きっとたくさん練習されたんだろうなあ…想像もつかないです。

なんと言えばいいのかわかりませんが、とてもいい映画だったなあという気持ちが心に残っています。映画館で観る映画はいいなあ。時々観に行きたいものです。

言語処理100本ノックを始めました(第1章)

とってもお久しぶりです。研究室に配属されたり試験があったりと忙しくて特に何もしていなかったのですが、夏休みに入ったので研究室の先輩に勧められた言語処理100本ノック 2015を始めることにしました。ふんわり記録を残していこうと思います。なんだかんだでPython3を使っています。

第1章

テキストとか文字列とかを扱うもの。3日前ぐらい?に解きました。準備運動と題されていますがプログラミング久しぶりすぎて慣れるまで大変でした。がんばらないと…

# 00 文字列を逆向きに表示する
# 文字列で向きも指定できるの楽しいって思いました
string = "stressed"

string = string[::-1]
print(string)

# 01 文字列から指定の部分を抜き出して表示する
# 1文字目のことを0と1の間というふうに考えるのがわかりやすくていいなと思いました
string = "パタトクカシーー"

string2 = string[0:1] + string[2:3] + string[4:5] + string[6:7]
print(string2) # パトカー

# 02 2つの文字列を分解して指定の順番につなげる
# forとか使えばもっときれいにいくなあと思いつつ脳筋コードをかきました
# +でそのまま文字列をくっつけられるのが簡単でよいですね
string1 = "パトカー"
string2 = "タクシー"

string = string1[0:1] + string2[0:1] + string1[1:2] + string2[1:2] + string1[2:3] + string2[2:3] + string1[3:4] + string2[3:4] 
print(string) # パタトクカシーー

# 03 単語の文字数をリストにする
# スペースで区切ったあとどうするかなかなか分からずどなたかのコードを参考にしてスペースで区切った後の単語長からコンマとハイフンの数を引くという形をとりました
# スペースで区切ったあと,.を除去したリストを作って数えるのが良かったのかもしれない
string = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
words = string.split(" ")
result = []

for word in words:
	result.append(len(word) - word.count(',') - word.count('.'))

print(result) # [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

# 04 指定された位置の語は最初の1文字、あとは最初の2文字を取り出してインデックスと取り出した文字の辞書を作る
# 元素記号表になるみたいですが12番目のMightだけは合いませんね
# indexと何番目の対応で少し混乱しました(最初が0だったり1だったりとかのありがちなやつ)
string = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
words = string.split(" ")
indexlist = [1, 5, 6, 7, 8, 9, 15, 16, 19]
resultdict = {}

for word in words:
	if words.index(word)+1 in indexlist:
		resultdict[words.index(word)+1] = word[0:1]
	else:
		resultdict[words.index(word)+1] = word[0:2]

for key, value in resultdict.items():
	print(key, value)

# 05 ngramを作る関数を書き、与えられた文から単語bigramと文字bigramを得る
# 長さとインデックス位置とで混乱したりしました
# スペースの扱いが変わるだけだと思えば同じ関数を使い回せたのかなという気もします
# coding: utf-8

string = "I am an NLPer"

wngram = [] # 単語ngramを格納するリスト
cngram = [] # 文字ngramを格納するリスト

def word_ngram(sequence, n):
	words = []
	words = sequence.split(" ")

	for word in words:
		if len(word) < n: # 単語の長さがnより短ければそのままngramに加える
			wngram.append(word)
		else:
			l = len(word)
			for i in range(0,l-n+1):
				wngram.append(word[i:i+n])

def char_ngram(sequence, n):
	sequence = sequence.replace(' ', '') # スペースを取り除いて1つの文字列につなげる

	if len(sequence) < n:
		cngram.append(sequence)
	else:
		l = len(sequence)
		for i in range(0,l-n+1):
			cngram.append(sequence[i:i+n])

def main():
	word_ngram(string, 2)
	char_ngram(string, 2)

	print("単語ngram")
	for ngram in wngram:
		print(ngram) # I am an NL LP Pe er

	print("文字ngram")
	for ngram in cngram:
		print(ngram) # Ia am ma an nN NL LP Pe er

if __name__ == '__main__':
	main()

# 06 2つの文字列のbigramの集合を求め、和集合、積集合、差集合をとり、それぞれに与えられた文字列"se"が含まれるか確かめる
# 集合の扱いの練習、数学で使う集合と似たような感じで扱えてよかったです
# 順番がバラバラなので一瞬どきっとしたりはしました

# coding: utf-8

string1 = "paraparaparadise"
string2 = "paragraph"

ngram1 = []
ngram2 = []

def char_ngram(sequence, n, ngram): # 05から文字ngramを求める関数を持って来ました
	sequence = sequence.replace(' ', '')

	if len(sequence) < n:
		cngram.append(sequence)
	else:
		l = len(sequence)
		for i in range(0,l-n+1):
			ngram.append(sequence[i:i+n])

def main():
	char_ngram(string1, 2, ngram1)
	char_ngram(string2, 2, ngram2)

	X = set()
	Y = set()

	for ngram in ngram1:
		X.add(ngram)

	for ngram in ngram2:
		Y.add(ngram)

	print("X")
	for ngram in X:
		print(ngram), # ar di ra is se pa ad ap
	print("")

	print("Y")
	for ngram in Y:
		print(ngram), # ap ar ra pa ph ag gr
	print("")

	plusXY = X.union(Y)
	print("X+Y")
	for ngram in plusXY:
		print(ngram), # di ra se ad pa ag gr ar is ph ap
	print("")

	interXY = X.intersection(Y)
	print("X*Y")
	for ngram in interXY:
		print(ngram), # pa ra ar ap
	print("")

	minusXY = X.difference(Y)
	print("X-Y")
	for ngram in minusXY:
		print(ngram), # di ad se is
	print("")

	print("Xにseが含まれる")
	print ("se" in X) # True
	print("Yにseが含まれる")
	print ("se" in Y) # False

if __name__ == '__main__':
	main()

# 07 引数を受け取ってテンプレート文を生成する関数を作る
# 文字列を返すの便利…
# coding: utf-8

def temperature(x, y, z):
	string = x + "時の" + y + "は" + z
	return string

def main():
	temperature("12", "気温", "22.4")
	print(temperature("12", "気温", "22.4")) # 12時の気温は22.4

if __name__ == '__main__':
	main()

# 08 入力文字列が英小文字であれば(219-文字コード)の文字を返し、そうでなければそのまま返す関数cipherと復号関数decipher
# 英小文字の識別、文字→文字コードの変換(とその逆)、いろいろ調べました
# coding: utf-8
def cipher(string):
	clist = list(string) # 入力文字列を文字のリストにする
	rlist = [] # 結果の文字リスト
	for c in clist:
		if c.islower():
			c = chr(219 - ord(c))
			rlist.append(c)
		else:
			rlist.append(c)
	rstr = ''.join(rlist) # 結果文字列
	return rstr

def decipher(string):
	clist = list(string) # 入力文字列を文字のリストにする
	rlist = [] # 結果の文字リスト
	for c in clist:
		ccode = ord(c) # 今の文字コード
		ordcode = 219 - ccode # 元の文字が英小文字だった時の文字コード
		cc = chr(ordcode) # ordcodeを文字に変換したもの
		if cc.islower():
			rlist.append(cc)
		else: # ccが英小文字でなければ元の文字をそのまま
			rlist.append(c)
	rstr = ''.join(rlist) # 結果文字列
	return rstr

def main():
	test = "Python"
	cip = cipher(test)
	print("暗号化:" + cip) # Pbgslm
	decip = decipher(cip)
	print("復号:" + decip) # Python

if __name__ == '__main__':
	main()

# 09 各単語の先頭と最後の文字を残し中の文字列をランダムに並び替えて返す
# ランダムに並び替えるのどうやるんだろうってなりましたがシャッフル関数があるんですね…なんでもあるなあって気持ち
# 文字列→リスト→文字列の操作に慣れました

# coding: utf-8
import random

def typo(string):
	words = string.split(" ")
	rlist = [] # 結果ワードリスト

	for word in words:
		if len(word) < 5:
			rlist.append(word)
		else:
			l = len(word) # 単語の長さ
			randstr = word[1:l-1] # 並べ替え対象文字列を取り出す
			randlist = list(randstr)
			random.shuffle(randlist) # ランダムに並べ替え
			randstr = ''.join(randlist) # 並べ替えしたリストを文字列に戻す
			word = word[:1] + randstr + word[l-1:]
			rlist.append(word)

	rstr = ' '.join(rlist) # 結果文字列をスペース区切りで結合した文字列
	return rstr

def main():
	test = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
	print(test)

	result = typo(test)
	print(result)
        # 例
        # I cd'lonut bvleeie that I cuold atclluay uradesnntd what I was rdaenig : the phoaneenml pwoer of the hmuan mind .

if __name__ == '__main__':
	main()

新しい言語に慣れるという感じでおもしろかったです。

ラ・ラ・ランドを観ました

昨晩ラ・ラ・ランドを観に行きました。とってもいい映画だったのでみんなぜひ観てほしいなと思います。
特に音楽好き・ミュージカル好きな人におすすめだと思いました。ジャズ好きな方は絶対観るとよいのでは。でももうみんな観て。
映画『ラ・ラ・ランド』公式サイト
あらすじは公式サイトを読むとよいと思うのですが、ざっと書くと、今よりちょっと前のハリウッドで売れないジャズピアニストと売れない女優さんが出会って恋に落ち、励まし合ったりぶつかりあったりしながらお互いの夢に向かって進んでいく話です。2人がそれぞれ壁にぶつかって少しぶれることはあってもしっかり夢を持って叶えようとする姿が印象的でした。明るい気持ちになれるけど最後にはほろりとくるのがとてもよかったです。
今はサントラがほしいです。昨晩の上映はレイトショーだったのでグッズ売り場が閉まっていたのです…

この先は長文ネタバレするので切ります。観てない人は読まないで、観てから気が向いたら読んでほしい感じです。

続きを読む

春休みです

おととい実験の最終課題を無事終えたので春休みに入ることができました。新学期始まるごとに学校原因でいろんな言語に手を出して、半期終わるごとに疲れた、次は別のってなってるのよくないなって思います。
今までいつどの言語を触ってきたかというのを書き出してみると次のようになります。

  • '13:高校の情報の授業でJavaScriptを一瞬
  • '14前半:大学に入った。1回生向けゼミでArduinoを触ったのでArduino言語
  • '14後半:Scheme。Jakldという処理系を使った。Javaで動いてるらしい(Javaアプリケーション組み込み用のLispドライバ)
  • '15前半:'14前半の授業の続きでScheme、実験でC(いろいろなソートをしました)
  • '15後半:実験でWebサーバクライアントを作るってことでCかと思いきや、最後になって「今までCで作ってきたものをJavaで作ってみましょう!」ってなる。サンプルプログラムを書き替えるものだったからあれだけど
  • '16前半:実験で、Racket*1を使ってSmall-Cコンパイラを作った。Schemeやん。
  • '16後半:実験2種*2Java+SQLで簡単なWebシステムを作るもの、C言語QRコードの読み書きするプログラムを作るもの。あと他講義でCoq(Gallinaという言語を使ってるらしい証明支援システム。OCamlに似てるらしい)。

書いてたら「あ、これLispやればいいんじゃね」ってなるぐらいにはSchemeの印象が強かったです。でも'16後半でJavaとC触ったせいか何か吹っ飛んでる。やばいぞ
うちの学校、1個下の学年からは実験がJavaで統一されてるらしいので改革を感じます(最後の実験は選択式なのでものによって言語も違うと思いますが)。ていうかRacketとかSchemeがカリキュラムから消えたらしい。

春休みの予定としましては、バイトをしつつ応用情報技術者(秋落ちました)の勉強をしたいと思っているのですがまだ申し込みをしておりません。あとTOEIC/TOEFLあたりの勉強もしないといけない気はします(うちのパソコン、TOEICは変換できるのにTOEFLは変換できないんだけどなんで?)。とりあえず今のところとしましてはバレンタインのお菓子を作るために実家に戻ってきています。
また何かしたらここに少し書けたらいいなと思います。

*1:ほかの言語を使ってる人もいた。2個上まではCを使ってたらしい

*2:前半3種、後半3種から1つずつ自由選択。人数が偏ると抽選で希望とは違うところに移ることになる

試験が終わりました

まだ実験の最終課題を終えていないので春休みには入れないのですが、試験が終わったので軽く振り返ります。

  • マルチメディア:正直範囲も量も多いので、持ち込み可にしてほしい科目ベスト5ぐらいには入ると思いました。過去問の解答を作ったり先生が用意してくれた演習問題を解いてみたりして準備したのですが、なんか思ってたのと少し違う感じだったので対策足りなかったな~という感じ。資料内の用語の自分なりの説明を作っておくのがいい対策になりそうです。
  • HI:これも資料が多いのですが、先生が最終回で言ってくれた範囲に絞って該当の過去問を解くとしあわせになれるなあと思いました。
  • 集積システム:来年はなくなる科目。カンペ持ち込み可がありがたかったです。でも一部予想と違うところが出たのであああああって叫びました。
  • A1:複素微積分の科目でした。演習を解いておけば割とテスト対策になるし平常点にも入るし優しい…演習がどれぐらいの点数になっているかが鍵という感じ。
  • 応用代数学:去年単位取得済みの友人たちから、講義ノートの証明とか例題とかを見ておくのが対策になると言われていたのですが本当にその通りで頭が上がりません。あとめっちゃ抽象的な話だから行列の掛け算とかなんか適当に具体例を想像しながら内容理解するといいよってアドバイスをもらったのもめっちゃよかった。
  • アキテク1:再履。演習問題の解答をひたすら覚えるのみでありました。一発合格の知らせをもらったのでありがたいです。
  • パターン認識:演習問題が普通に難しかったし数学の授業じゃないのに数学の話がいっぱい出てくるし、自分の数学の素養の足りなさを実感してました。演習問題とテストが似てたのかすらよくわからなかった。
  • 情報システム:持ち込みしたいよう~~~ってなりましたが過去問を解いたり資料の式を覚えたりしたら何とかなったような気分です。
  • ソフトウェア工学:過去問を解いたらなんとかなりました。ほとんど同じだったし…でも来年から先生が変わるみたいなので過去問使えなくなるんですね
  • 計算と論理:むちゃくちゃ細かい字でカンペを書いたのですが理解が足りなくてダメだったところがいくつか。と思ったけどあとから落ち着いて救済レポートとして解き直してたら、時間をかければできるなあという感じで複雑な気持ちになりました。

力不足な感じは否めませんががんばったと信じたいです。下の学年は必修科目が減ってるらしいのはうらやましいなあ。

あけましておめでとうございます

本年もなにとぞよろしくお願いします。今年はできるだけマイナスのことを書かないように心がけたいです。特段進捗がないので年越しのことを書きます。
今回の年越しは母の実家で紅白を見て過ごしました。ゴジラのくだり、わたしはとっても好きだったんですけどどうなんでしょう。PPAPに第九コーラスが重なってゴジラが苦しむところなど、妙な力を感じて涙なしでは見られませんでした(嘘です。めっちゃ笑いました)。
紅白が終わった後幼いいとこたちと近くのお寺まで行き、除夜の鐘をついてきました。何か思いのほか力入っちゃって思ったより大きい音が出てしまい、自分の鳴らした音に自分がびっくりするというよくわからないことになりました。
日付が変わると海岸で花火が上がるのですが、鐘をついていたら日付が変わったので海辺まで全力疾走して花火の写真を撮りに行きました。初走りです。
f:id:momo_moemoe:20170102202811j:plain
花火の写真を撮るのは難しいですね。

日の出が7時過ぎだというのですぐ寝て6時半に起きて待機しました。屋根の上に登って待っていたのですが周りが山なのでなかなか太陽が見えませんでした。結局8時過ぎになってやっと太陽が顔を出したのでもう少し遅くまで寝ててもよかったなあ。
f:id:momo_moemoe:20170102202819j:plain

そのあと父の実家に行って親戚たちとおせちを食べました。祖父母がかわいがっている文鳥が死んだ相方にいじめられてボロボロなのですが(つがいだったんだけどつつかれまくった。片目はつぶれてしまっているしお尻ははげている)何とか生きていて、ケージを覗くと前見た時よりだいぶ元気そうだったのでよかったです。
f:id:momo_moemoe:20170102202804j:plain
もがいたり眠ったりしているのを見ているとなんだか妙に可愛くて元気が出ました。止まり木にのせてもすぐに落ちてしまうのですが長生きしてほしいです。

今年もなんだか支離滅裂なものを書いてしまいましたがそれはさておきいい年にしたいです。

温まりたい

懐も気候も寒いので温まるために自炊したりいろいろしました。

最近の自炊

昨日の夜はこちら。
f:id:momo_moemoe:20161130211926j:plain
玉ねぎとマッシュポテトとツナのグラタンです。適当にレシピをメモします。

  1. 玉ねぎを食べやすいサイズに切って500Wのレンジで5分ぐらいチンする。
  2. 同じ入れ物にマッシュポテトの粉を適当に入れて豆乳を浸るぐらいいれて2分ぐらいチンする。
  3. ツナ缶を空けて汁ごと入れ、ピザ用チーズを好きなだけかけて普通のグラタンと同様にオーブンで焼く(グラタン用の自動メニューを使いました)。

ホワイトソース感を出したかった。ポテトはなかなかお腹にたまってよかったです。あと玉ねぎが甘くなりました。

今日の夜はこちら。
f:id:momo_moemoe:20161130211931j:plain
ツナ玉ねぎコーンの豆乳みそうどん。

  1. 玉ねぎを食べやすいサイズに切って、冷凍コーンとツナ缶と一緒に炒める。
  2. 冷凍うどんを解凍しておく。
  3. 具材を炒めたところに豆乳を少し入れ、味噌を少し溶かす。
  4. とろみがついたらうどんをいれて混ぜる。

豆乳つゆのうどんにするつもりだったのになんでクリームパスタみたいになったのかはよくわかりませんが(作ってる途中に方針転換しまくったのが悪い)、クリーミーでおいしかったです。

あとレンジ茶碗蒸しにチャレンジしました。


やってみた。めんつゆがなかったので醤油とほんだしを入れました。
f:id:momo_moemoe:20161130211935j:plain
うちのレンジだと2分40秒でいい感じのぷるぷるになりました。もう少しだしと醤油を入れてもよかったかも。すごく暖まりました!

温かい飲み物

寒すぎるのでいろいろしました。

  • 白湯:低カロリーで安いスーパードリンク!って、お湯じゃん!おふろ上がりに飲むとほかほかです。寝起きと寝る前に飲むといいそうです。

sp.lalu.jp

  • 豆乳生姜湯:豆乳を温めて飲みたかったのですが、ちょうど持っていたのが成分無調整のものでそのままだと少し飲みにくいかなと思ったのでいろいろ調べると、生姜湯を入れると意外と合うと出てきたのでやってみました。少ないお湯に生姜湯を溶かして豆乳を混ぜてレンジでほどよく温めて飲みます。ほんのり甘くなって飲みやすくなりました。あと生姜なので体が暖まる。

cookpad.com
これです。おいしかったよ。

  • 紅茶:懸賞でもらったティーパックを放置していたのでいれてみました。カフェインを寝る前にとると眠れなくなりそうなので朝方がよさそう。スパイス入りのものがあったので試しにいれてみたらちょっと暖まったような?チャイっぽい感じだったので今度はミルクティーにしてみたいです。

www.harney.jp
これをもらっていた。なんかすごそう。

その他

ルームシューズを出し、はんてんを着てこたつで丸くなっています。
あと寝るときの就寝用靴下が欠かせません。

とにかく懐が寒い。ラーメンが食べたい。だれかカンパ…(おい)