投稿

ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ございません。

このブログでは広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLaTeXのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

DebianユーザーがNLTKで自然言語処理の初歩の初歩を試してみた

この投稿は自然言語処理の中で一番初歩的なテキスト分析(字句解析)についての事始め。 ダウンロードとインストール Python 3のdebパッケージとPython3用の NLTK(Natural Language Toolkit) のdebパッケージを公式のリポジトリからダウンロードしてインストールした。 $ su # apt install python3 python3-nltk python3-nltkというdebパッケージは、Debianのバージョンのbusterにもbullseyeにもbookwormにも存在する。 NLTKは、そのホームページの説明等によれば、自然言語処理に必要な道具類をまとめたプラットフォームなのだそうで、しかもオープンソースの企画らしい。 ダウンロードとインストールがうまくいったのでPython3を早速起動し、 NLTKのホームページ に掲載されている簡単なコードを試してみた。 まずはPython3をターミナル・エミュレーター上で起動。 $ python3 Python 3.7.3 (省略) 次にNLTKをインポート。 >>> import nltk 適当に選んだ文字列をsentenceに代入した。sentenceは任意の識別子。 >>> sentence = """A similar argument applies ... to any other a priori judgement.""" >>> print(sentence) A similar argument applies to any other a priori judgement. Python 3ではヒアドキュメントを3つの二重引用符号(""")で囲む。こうした場合、/nなどによって改行を明示せずとも複数行に渡って文字列を入力できる。ヒアドキュメントとはHTMLのpre要素のようなもの。 文字列として選んだのはバートランド・ラッセル著の『哲学の問題』からの一節。 Russell, Bertrand. The Problems of Philosophy . p.140 epub形式...

Google Chartsを利用してHPやブログにチャート(グラフ等)を描く方法

ブログなどのウェブ・ページに自分の意見や主張や考えを掲載するときにそれを裏付けるデータがあると説得力が増すかもしれない。そのデータをチャートとして描いて視覚化できれば尚更。 その場合、一般的なのはそれを専門にしている表計算アプリを使うこと。表計算ソフトウェアにはデータを各種チャートの形にして視覚化してくれる機能が大抵備わっている。LibreOfficeのCalcの場合、そのチャートをコピーしてInkscape上に貼り付けることができる。それをPNG形式の画像やSVG形式の画像として保存し、それをウェブ・ページに掲載する方法がある。 他の選択肢としては、HTML5 CanvasやJavaScriptのライブラリを使う手がある。データを視覚化してくれるJavaScriptのライブラリが最近では数え切れないくらい多くある。 今回はGoogle Chartsのライブラリを利用させていただいた。その手順についてこの投稿に書き留める。 2種類のチャートの完成図 同じデータ・セットで2種類のチャートを作ってみた。その完成図が次のとおり。 Google Chartsが有効ではありません。このページを再読み込みをすると有効になることがあります。 1つ目のチャートは日本のマクロ経済のインフレ率の時系列データを折線グラフにしたもの。 2つ目のチャートは同じ時系列データを縦の棒グラフにしたもの。棒グラフだと0に近い値が見えなくなってしまっているためか、そこにマウスのポインタを合わせても値を表示してくれるイベント処理が機能しない。 Google Chartsが有効ではありません。このページを再読み込みすると有効になることがあります。 これらのチャートを描くためのコードをHTMLから順に説明する。 HTMLのコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Google Chartでチャートを描いてみた</title> <!-- loader.jsを読み込む --> <script src="https://www.gstatic.co...

LibreOfficeで列と行を置き換える(転置)

イメージ
使用したLibreOfficeのバージョンは6.1。現時点の最新版が7.2なので少し古い。 列方向に並んでいる値を行方向に並ぶように置き換えたい。行方向に並んでいる値を列方向に並ぶように置き換えたい。この投稿では、いわゆる「行列の転置」をLibreOffice Calcで行う2つの方法について書き留めておく。 例えば次のように値がセルに入力されているとする。 A B C D E 1 a b c d 2 1 2 3 4 3 4 5 これを次のようにしたい。 A B C D E 1 a 1 2 b 2 3 c 3 4 d 4 5 1つめの方法 まず、変換したい値全体を選んでアクティブセルにする。そしてトップメニューの「編集」などから「切り取り」または「コピー」を選ぶ。 A B C D E 1 a b c d 2 1 2 3 4 3 4 5 転置後の値が入るセルの範囲の一番左上端になるセルを選んでアクティブにする。 A B C D E 1 2 3 4 5 トップメニューの「編集」などから「形式を選択して貼り付け」を選ぶ。 このバージョン(6.1.5.2)のLibreOffice Calcではこの操作でLibreOffice Calc自体が固まってしまう現象が環境によっては起こるので要注意。 「形式を選択して貼り付け」というダイアログボックスが開くのでその中の「行と列を入れ替える」というボタンを押す。 A B C D E 1 a 1 2 b 2 3 c 3 4 d 4 5 2つめの方法 2つめの方法はLibreOffice Calcに組み込まれている函数を使うこと。LibreOffice CalcにもMS Excel同...

HTML5 CanvasとJavaScriptで折線グラフを描いてみた

使用した環境は次のとおり。 Chromium Version 90.0 Firefox Browser 78.13.0esr ECMAScript 6 (2015)以降 ECMAScriptはJavaScriptの標準規格。そのバージョンの6以降または2015以降では変数の宣言にletというキーワードが導入された。定数の宣言にはconstというキーワードが導入された。ただしletは予約語ではない。この投稿で掲載するJavaScriptのコードではletとconstを用いた。 JavaScriptにおける変数の詳細についてはまた別の機会に。 HTML5 Canvasで描いた折線グラフ 日本のマクロ経済データの1つであるインフレ率を1960年から2020年まで時系列に折線グラフにしたものが次の図。 このブラウザはHTML5 CanvasかJavaScriptをサポートしていません。 スクリプト言語JavaScriptとHTML5 Canvasの2次元用レンダリングのAPIを利用して今回はこの折線グラフを描いてみた。 HTML HTML5 Canvasを表示するために用意しておくHTML文書の基本的内容は次のとおり。 <!DOCTYPE html> <html> <head> <title>日本のインフレ率の折線グラフ</title> </head> <body> <!-- canvas要素にはid属性と幅と高さを設定する --> <canvas id="JapanInflationRateTimeSeries" width="700" height="400"> このブラウザはHTML5 CanvasかJavaScriptをサポートしていません。 </canvas> </body> <script> <!-- ここにJavaScriptのコードを書く --> </script> </html> ウェブ・ブラウザによってscript要素が最後に読み込まれることを期待してscript要素をbody要素の...

指数表記、科学的記数法、工学的記数法、浮動小数点数

科学雑誌や理系の教科書やコンピュータ・プログラミングの書物で次のような数値表記を目にすることがよくある。 \[ 5.972 \times 10^{24} \] \[ 6.62607015 \times 10^{−34} \] \[ 6.02214076 \times 10^{23} \] これらは日本語では 指数 しすう 表記という名前で知られている。英語ではscientific notation(科学的記数法)やstandard index form(標準指数形)と呼ばれている。 指数表記では0以外の数値を次のように10の累乗を掛けた式にして表す。 \[ m \times 10^n \] 以下、mを仮数部、10を基数部、nを指数部と呼ぶことにする。 コンピュータ科学の分野ではEまたはeを使って指数部を表記する。 \[ mEn \] \[ men \] 指数表記を通常の記数法へ変換 指数表記を通常の記数法に変換する方法はその指数部が正の数か負の数かで異なる。 指数部が正の数である場合、仮数部(かけられる数)の小数点を指数部の数だけ右へ移動させる。そして空白の桁には0を与える。例えば次のように。 \[ 4.9 \times 10^6 = 4900000.0 = 4900000 \] 4.9の小数点を右へ6桁移動させると0の桁が5つ加わって4900000になる。これで変換完了。 指数部が負の数である場合、仮数部の小数点を指数部の数だけ左へ移動させる。そして空白の桁には0を与える。例えば次のように。 \[ 4.9 \times 10^{-6} = 0.0000049 \] 4.9の小数点を左へ6桁移動させると\( \dfrac{1}{1000000} \)になって0.0000049になる。これで変換完了。 指数表記へ変換 通常の記数法で表されている数値を指数表記に変換するには次のようにする。 ここでは203000000を例に挙げる。 小数点を最大桁の右隣りまで左へ移動させる。 \[ 203000000 \Rightarrow 2.03000000 \] その小数点から右に何桁あるか数える。この例では8桁。指数部が8と決まる。 有効数字(この例では2.03)を残して残りの0の桁を削除。 \[ 2.03000000 \Rightar...

行列式、ラプラス展開、逆行列、行列の割り算

この投稿では行列の 除法 じょほう とそのために前提となるいくつかの予備知識について記した。ただし行列同士の非 可換 かかん 的な乗法についての基礎知識があることを前提にしている。非可換というのは交換法則が成り立たないこと。 逆数 分数の割り算では後者の分数の分母と分子をひっくり返して掛け算をすることがよく知られている。 \[ \dfrac{a}{b} \div \dfrac{\colorbox{yellow}{c}}{\colorbox{cyan}{d}} = \dfrac{a}{b} \cdot \dfrac{\colorbox{cyan}{d}}{\colorbox{yellow}{c}} = \dfrac{ad}{bc} \] 分子と分母をひっくり返した分数は元の分数の 逆数 ぎゃくすう と呼ばれている。英語で逆数はthe multiplicative inverseと呼ばれている。 例えば6の逆数は6分の1となる。 \[ 6 = \dfrac{6}{1} \rightarrow \dfrac{1}{6} \] ある数をaとし、その逆数をxとすると、aとxを掛け算すると1になるという関係が成り立つ。 \[ ax = xa = 1 \] \( x \)を未知の逆数としてこの方程式を解くとa分の1が得られる。そのために両辺をaで割っている。 \[ \begin{align} ax &= 1 \\ \dfrac{\cancel{a}x}{\cancel{a}} &= \dfrac{1}{a} \\ x &= \dfrac{1}{a} \end{align} \] aとその逆数であるa分の1とを掛け算すると、その答えは1になることが分かる。 \[ a \cdot \dfrac{1}{a} = \dfrac{a}{1} \cdot \dfrac{1}{a} = \dfrac{a \cdot 1}{1 \cdot a} = \dfrac{a}{a} = 1 \] 例えば次のように。 \[ 3 \cdot \dfrac{1}{3} = \dfrac{3 \cdot 1}{1 \cdot 3} = \dfrac{3}{3} = 1 \] \[ 1.5 \cdot \dfrac{10}{15} = \dfrac{15 \cd...