Month: January 2023

職場で泣かされて、なお修行する:LaTeX

こんにちは。先週職場で泣かされたRockinWoolです。まあ、今はエンジニアですしこんなもんだろうなあと思っております。しかし、将来は必ず研究者になるためにも今日も論文作成に邁進しないといけませんね。\ さて、本日は前回のLaTeXの続きからやっていこうと思います。今日はここから始めていこうと思います。\ 1.数式の挿入 まずは参考サイトにある例をここにそのままコピペしました。 これをptex2pdf -l hoge.texすることによってPDF化すると、数式が挿入できていることがわかります。LaTeXでは数式用の文字を$E$のように表記したり、数式を のように記載するんですね。後、単位は\, \mathrm{m/s}で表現するみたいですね。 2. 数式の代入2 次の数式が簡単とか紹介されているんですけど・・。うーん・・天才ってやっぱり存在しますねえ。 これをまたptex2pdf -l hogehoge.texするとなんとも珍妙な式が出てきます。個人的にはうおおおお・・・って感じです。\ まず\frac{分子}{分母}で分数を表現します。\piはπで\left(hogehoge\right)は中身に応じて大きさの変わるカッコ。積分記号は\int_{下限}^{上限}で表わせ、無限大は\inftyらしいです。個人的には\inftyが一番間違えそう。他にも三角関数\sin x,\cos,\tanや対数\log、平方根の\sqrt{x}や\sqrt{3}{x}、総和相乗の\sum,\prodなどがあります。\sum_{下限}^{上限}ともできるみたいです。そういえば話がそれますが、英語では総乗のことをプロダクトと言うんですよね。これをみて思い出しました。\ 3. 各種パッケージの利用 ここで、いままででamsmathやamssymbという数学用パッケージを無意識に使用していたことが明かされました。Pythonなどとは違って宣言しなくても使用できるライブラリもあるということなのでしょうか?そして、明示的にパッケージを使用する例として、次の内容が解説されました。 今までの経験より、2行目のusepackage{multicol}でマルチカラム・・すなわち複数の列からなる文章を作成できるようにしているのかなと推測できます。これは\begin{multicols}{3}から始まってend{multicols}で終了するように書かれています。 4. レポートを書いてみる これが一番のLaTeXを使う目的ですよね。レポートの例として以下のソースが示されています。 これだけでもメチャクチャかっこいいレポートが書けてしまいます。LaTeXすげえ!最初の\documentclass{jsarticle}と\begin{document}。そして最後の\end{document}が共通して宣言する基本文法。そして、ドキュメントの開始宣言の後の\title{hoge}、\author{fuga}、\maketitleでタイトルを出力するそうです。リンク先にも書かれていますが、日付はデフォルトだと今日の日付が勝手に入ってしまうそうなので、明示的に指定する場合は\date{hoge年fuga月n日}とすれば良いそうです。 章は\section{hoge}で宣言できるそうです。何も指定しなければ勝手に番号が振られる部分はmarkdownと同じですね。番号を振りたく無い場合は\section*{hoge}とすれば良いそうです。章内のサブセクションは\subsection{fuga}でやるみたいです。 二段組にする場合は最初の行をdocumentclass{jsarticle}のようにすれば良いみたいです。一応試してみたら、タイトルの部分はそのままで本文の部分が2段組みになりました。

LaTeX初心者への道

こんにちは。RockinWoolです。今は朝早くから論文を書く作業をしようと思ってパソコンを開いたものの、OSがubuntuのパソコンしか手元になくて書けないとなっているところです。さて、挨拶を書いたところで気づいたのですが、論文なのだからLaTeXで書けば良いですね。これならubuntuのほうが向いていそうですし。\ LaTeXの環境構築はWindowsだと死ぬほど面倒だった記憶があるのですが、Ubuntuならば簡単なんでしょうね。そう思ってこちらのサイトを見ながら作業を進めていきました。 あとついでに載っているPDFへの変換方法も、メモでここに載っけておきます。 LaTeXはチュートリアルサイトがあったのでこれで練習していこうと思います。最初の内容は以下の内容をコピペしてpractice1.texとでも命名して保存するところから始まります。 ここで先程のコンパイルとPDF化をこのpractice1.texに対して行ったのですが 、わざわざplatexとdvipdfmxなんてしなくても以下の一行でまとめられるらしいです。

今日から4日間は普通に過ごす

こんにちはRockinWoolです。最近は仕事でもマークダウンを使用しているので、少々使い方に幅がでてきたかな・・・という感じです。マークダウンって凄い楽なので良いですね〜。さて、今日はPythonやCに慣れる日と決めていたので早速実況しながら色々やって行こうと思います。

久しぶりにPythonに触らなければしぬと思った

2020年8月某日こんにちは。最近仕事にばっかり注力していたRockinWoolです。仕事辞めたいといつも思っているのに、それが人生の時間で一番大きな割合を占めているのがしょっちゅう許せないですよね。そういうわけで、前回の投稿から現在までの間で色々勉強のスタイルを模索して、結果としては出社前に一時間程度勉強してから出勤するのがアタマが冴えてベストという答えになりました。これを習慣付けて、パワーパーソンになるべく修練を積んでいこうと思ってます。 さて、今回は前回までの’Pythonで学ぶネットワーク’ではなく、最近にわかに話題らしいGinzaについてです。「まえがきで散々勉強勉強言って置きながら全然アンタの専門ちゃうやんけ」って言われそうですが、やりたかったんだもん。仕方ない。 Ginzaについては次のサイトに詳しく書いてあります。自然言語処理ライブラリGiNZAをインストールして簡単に動かすまでの手順 そもそも自分がGinzaについて知ったのは完全に偶然です。先週、自分の部署に初めてとなる後輩新入社員がやってきたので、最近興味あることを聞いてみたらIBMのWatsonって答えたんですよね(本当はこの回答は3番目くらいに飛び出した内容で、ドローンとかそういうやつのほうが興味ありそうでしたけど)それでWatsonに興味を持ったんですけど、WatosonはIBMの登録がいるとかなんとかで、なんか面倒だなあって思ってしまったんですよね。それで、来たようなやつで自由に使えそうなやつ無いかなあと思っていたらGinzaにたどり着いたってわけなんです。GinzaはMITライセンスらしいので安全ですね!(ライセンスについては全然知らない) それでは今回も実況しながら進めて行こうと思います。まず、Ginzaはpipしか対応していないっぽいので(conda install Ginzaってやったけどダメだった)新たにAnacondaの環境を作成することにします。詳しいことはこのページでも見れば良いと思います。環境名はGinzaを実行する用としてGinpyにしました。 一応、環境一覧をinfo -eで確認してから、Ginpyに移動します。 ではGinpyにGiNZAを入れていこうと思います。コマンドは以下の通りにしました。 とりあえず、これでGiNZA自体を入手することは成功したので、所有欲の半分は満たされました。次は支配欲を満たすために実際に使っていくことにします。 まずは形態素解析から。形態素解析は説明するよりも見るほうが早いと思うので説明は省きますが、高校時代にこれがあればもうちょっと国語に興味が持てたかなあと思います(多分そんなことは無い)適当な作業ディレクトリに移動して以下の流れでファイルを作って、コードを書いてみます。\ すると、上手く動きはするのですが、警告が! ぱっと見、バージョンが新しいから危ないよ。コマンドを打って調整してね!って書いてありそう(適当)なので、コマンドを打ってみる…が全然ダメだし、もう普通に動いているから問題ないやってことで進めていきます(諦め) 先程のGintes1.pyを実行すると以下のような表示が出力されます。 ここで一言、すげえと出てしまいました。ワーカホリックとかも辞書登録されているのでしょうか?かなり正確に結果が出ていることがわかります。これらの関係は画面出力でより簡単に理解できるみたいです。 あと個人的に気になったのは2つの文章を見比べて類似度とやらを出してくれる機能。具体的に何をやっているのかは専門家ではないので知らなくていいかなあ。 上を実行すると結果は0.46384519507135974って表示されます。半分くらい似ている・・・らしいけど、なにが半分似ているって根拠なんだろう?文章の中の各言葉間の類似度を計算することもできるらしいです。 ここで問題発生。最初に作ったAnacondaの環境にはpandasが入ってなかったようなので、急遽conda install pandasで追加しました。最終的にはが出力されて単語ごとの類似度もわかります。すごいですねえ。

コロナ禍の中で: Pythonで学ぶネットワーク分析

こんにちは。RockinWoolです。最近は、このコロナ禍の間になんとしてでも成長しておかないと後の人生に響きそうだなあと思って研究や仕事に頑張っています。ただ、仕事を頑張りすぎると学問から遠ざかってしまって感覚を忘れてしまいそうなのが最悪ですね。ということで今日も勉強という名のプログラミングで進捗を生み出していました。 さて、今日のテーマは Pythonで学ぶネットワーク分析 これは自分の研究範囲の一つである複雑ネットワークとpythonの解説をしてくださっているらしい本なので、早速いつもどおり実況しながら進めていきます。第一章一部:ネットワークの概念について簡単に説明してくれていますね。複雑ネットワークにおける特徴量,アルゴリズム,モデル,プロセスの定義も簡単にしてくださっています。自分だとアルゴリズムとプロセスの研究者になるのかな? 第一章第二部と第三部:ネットワーク分析ツールの情報比較をしています。早速自分が使い倒しているnetworkxについての解説がありますね。ここで一つ知らない単語が。ハッシュ可能ってなんだ?ってなって調べました。 https://www.it-swarm.dev/ja/python/python%E3%81%A7%E3%80%8C%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E5%8F%AF%E8%83%BD%E3%80%8D%E3%81%A8%E3%81%AF%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/1071742522/ ふーん。なんとなくだけど、データの代入の話みたいですね(理解力皆無)。とりあえず、networkxを使えば、ノードの情報に画像みたいな代入可能な任意のオブジェクトを突っ込めるということみたいですね(多分)他に知っているツールはigraphくらいでした。というかigraphってpythonで使えたんだ・・・(Rだけだと思っていた)可視化ツールの方はいつもお世話になっているmatplotlibが出てきていますが、もう一つ見慣れないBokehというものが紹介されていますね。内容よりもその名前が気になってしまいました。(ボケーってw)。ここでもまた一つ知らない単語が!インタラクティブな可視化ってなんでしょう? https://www.weblio.jp/content/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96 これは調べてみたらいつも仕事で使っているような内容で絶望。対話型とか双方向会話とかの話ですね。ネットワークを描画した後に修正できるのだとしたらmatplotlibよりも優れている部分がありそうですね。今度使ってみよう! 第一章第四部:Pythonについての概説が書いてありますね。ここに書いてあったライブラリは全部つかっていました(笑)最近アツいのはここでもしょっちゅう使っているscipyか、あるいはいつものnetworkxですかね?そういえばmatplotlib.pyplotのcolormapを最近いじり始めて楽しいのでそれでもいいかなあ。そういえばnetworkxは人生初コントリビュートしたいと思っているプロジェクトなので、自分で不具合を見つけたいなとは思っています!コントリビュートの方法を誰か教えてくれませんか?(チラッ) 第一章第五部:JupyternotebookとAnacondaが出てきました。実は自分はAnaconda+VScode派なのでJupyter notebookはdockerコンテナで環境を固定するときにしかあまり使ってないんですよね。とはいえ、この本ではJupyterNotebook推奨だというならば使うかな・・・と思っていたら・・。 第一章第六部:Colaboratoryについての説明がありました。へー最近ではこんな便利なものも使われているのか!でもこの作者には申し訳ございませんが、自分は自作PC(組み立てだけだけど)が趣味なので自分のAnaconda環境で良いという気はします。ただ!こんな簡単に環境設定できるならば学部生時代はもっと苦しまずに勉強できたと思います。(工学部や情報学部あるあるだと思いますが、高校まで5教科7科目しかやってなくて大学最初のC言語で詰んだ人間です。まあ、その時に本気で泣きながら一人で先生の提示したC言語基本問題300問を2週間くらいかけて解いたのがきっかけでプログラムの世界にはいったのかもしれませんが:隙あれば自分語り)\ とこのあたりまで読んだところで裏で回していたプログラムも終わったみたいなので、今日はここまでにします。それではまた!

充実したGW(研究生活)を送っています

2020年5月某日こんにちは。研究に勤しむRockinWoolです。今週はプログラミングに次ぐプログラミングの生活を送っているので非常に充実しています。この調子で頑張ってクソみたいな社会から独立した科学者になるぞ〜!ということで今回は今週の出来事をひたすら書いていこうと思います。今回は技術の話は薄めなのでいつも通り興味の無い方は早めにブラウザヴァっくをよろしく! これに関しては自分の問題なのかもしれませんが、朧な記憶をたどるdocker-composeを唱えたときになぜかsnap install dockerで一緒に入ってくる予定だったdocker-composeが存在しなくてapt-getかなんかで入れ直したことが原因だと思うんですよね。sudo apt install docker.iosudo apt install docker-composeで解決しました。 こちらは単純に新しいものを使ってみようというやつです。感想は「以外と使いやすい!」画像とコメントをきれいに配置することに関してはWordやExcelをはるかに凌ぐ使いやすさでした。ところで、全然関係ない愚痴になっちゃうんですけど、自分の教授とこういうものを遊びながら試して覚えるのと、会社で先輩とか上司からこういうものを指示されながら習うのだと全然習得スピードが違う感じがするのはなんでなんでしょうね?やっぱり自分は会社というものに向いていないのかな?色んな人が色んなふうに存在しながら話をしなければならない空間がとても辛くて気持ち悪くて逃げ出したくなるんですけど、普通の人ってなんで普通に過ごせるんだろう? こちらは上とは逆に、昔作った自分のプログラム等を修正したり拡張したりしています。昔の自分が作ったプログラムが難解だったり間違っていたりするのを見るたびに成長したんだなあと思います。たしかLinusの言葉だったと思うんですけど、「1つのプログラムは1つの機能だけを持たせなさい」ってやつがあったと思うんですよね(すごくうろ覚え)一年前の自分は1つのプログラムにすべての機能を入れてしまおう!って感じで作っていたみたいで今の自分からすると「分解!分解!分解だぁ〜!」ってなります。あとは自分でプログラミングするのってとても大切ですね。自然とその部分はコピペ部分よりも可読性が高くなるんですよね。あと仕様ライブラリのreferenceを読むのもとても大切。昔は使えたnetworkxのG.self_loop()が今は使えなくてnx.self_loop(G)としなくちゃいけなかったんですが、某キータ君のデータは古かったり間違っていたりして使えなかったんですよね。なので自分で頑張って英語を読みました。 上つながりなんですけど、自分の夢は海外で研究者になることなので英語を喋れなければだめです。しかし、全然喋れない。しかも聞き取れない。これはまずいので修行しようと思っていろいろ聞くところからはじめました。 ということで、スーパー意味の無い記事かもしれませんが最近の自分をメモしました。いつか自分が見直して、こんなんだったんだなあと言えるようにがんばります。