研究室の計算機管理者のススメ(2)OS
土台をつくろう!
今回は計算機環境の土台作りということで、以下の三点についてお話します。
これにより、ユーザー情報およびファイルを共有することができます。
おっと、導入を読んでいないかたは、↓からどうぞ kanji.hatenablog.jp
続きを読む研究室の計算機管理者のススメ(1)導入
計算機管理は辛くて楽しい
研究をしながらの計算機管理は辛いですが、楽しいものでもあります。
計算機管理(Linuxを用いるもの)に興味がある人や、計算機管理初心者向けの内容になります*1。
計算機管理は大変ですが、Linuxに関する知識が山ほど身につきます。
最初は分からないことだらけで、不安ばかり生まれます。 でも、怖じけず、力まず、着実にステップアップしましょう。
数回の記事に分けて、計算機管理について説明します。 今回は計算機管理者とは何かについてと、計算機の選定についてです。
目次
*1:研究室の次期計算機管理者向けに、口頭や資料で伝えていることをまとめとして書いているつもりです
Bloggerからの引っ越し
お引っ越し
Bloggerからはてなブログへ引っ越した。 理由は、Markdownが楽に使えるから。
確かにBloggerでもStack Editを使えば書けたけれど、回りくどいのとファイル管理がややこしい。
作業の備忘録などを手軽に書きたいため、はてなブログへ移行した。
移行の手間
google-blog-converters-appengineを使えば、コマンド一発だった。
ダウンロードしたファイルを解凍して、
cd google-blog-converter-r89 ./bin/blogger2movabletype.sh \ ./bloggerのエクスポートからダウンロードしたファイル.xml \ > はてなブログにインポートするファイル.xml
出力したファイルをインポートするだけだった。 簡単だった。
シェルスクリプトでスクリプトのパスを取得
シェルスクリプトでスクリプト自身のパスを取得
シェルスクリプトを書くときに、cd シェルスクリプトがあるディレクトリ
というようにカレントディレクトリをスクリプト自身のパスに変更したいときがあります。こうすることで、シェルスクリプト内ではそのシェルスクリプトを基準とした相対パスで処理を記述することができます。
やりかた
$(コマンド)
もしくは`コマンド`(バッククォート)でコマンドを実行し、その標準出力を文字列として扱えます。$0には実行したシェルスクリプトの名前が入ります。
#!/bin/sh
cd $(dirname $0)
コマンドは、実行するシェルスクリプトがあるディレクトリの位置を相対パスで取得し、そこに移動するという意味です。
Pythonの正規表現でカタカナやひらがなを引っかける
perlだとUnicodeプロパティで
しかし、PythonはUnicodeプロパティをサポートしていない?ようですので、正規表現で獲得します。
これらは使用用途に応じて、Unicode表を見る必要があります。
図書館員のコンピュータ基礎講座さんにUnicode表が、きれいにまとまっています。
閉鎖中ですが、まだサイトは当面維持されるようです。
- カタカナの表
- ひらがなの表
\p{Hiragana}
とするところです。 しかし、PythonはUnicodeプロパティをサポートしていない?ようですので、正規表現で獲得します。
前提
Unicodeが対象です。ひらがなの獲得
reモジュールで正規表現をコンパイルして、fullmatchで全一致かどうかを判定します。\u3041
は「ぁ」、\u3093
は「ん」を表します。# -*- coding: utf-8 -*-
import re
re_hiragana = re.compile(r'[\u3041-\u3093]')
print(re_hiragana.fullmatch('ひらがな'))
# Trueが返ってくる
カタカナの獲得
ひらがなと同様です。\u30A1
は「ァ」、\u30F4
は「ヴ」を示します。# -*- coding: utf-8 -*-
import re
re_katakana = re.compile(r'[\u30A1-\u30F4]+')
print(re_katakana.fullmatch('カタカナ'))
# Trueが返ってくる
Unicodeの確認
上記正規表現は、厳密に言うとすべてのカタカナやひらがなを満たしていません。これらは使用用途に応じて、Unicode表を見る必要があります。
図書館員のコンピュータ基礎講座さんにUnicode表が、きれいにまとまっています。
閉鎖中ですが、まだサイトは当面維持されるようです。
- カタカナの表
- ひらがなの表
NaiveBayse、SVMによる文書分類を試す
NaiveBayesによる文書分類、SVMによる文書分類を試しました。
例えば、ニュース記事がスポーツか政治社会かということを分類します。
ここではフリーで入手可能なコーパスを用いて、文書分類の代表的な手法であるNaiveBayseとSVMを使います。
文書分類に用いる素性は、文書中の名詞のTF・IDF値としました。
TF・IDFは単純に説明すると、様々な文書で使われる語の重みは小さく、一部の文書でのみ使う語の重みを大きくするような、語に対する重みです。
もう少し踏み込むと、TF(語の頻度)とIDF(出現する文書数の逆数)の積となります。
以上の素性を用いて、NaiveBayseおよびSVMで分類を行います。
NaiveBayseの理解のためにgihyo.jpの記事を写経して作ったものがここにあります。(今回利用した訳ではありません。)
SVMはパターン識別器を与えられた正解データから作成する機械学習器です。
詳細は割愛します(というよりも詳しくはっきりは理解できていません。)
MeCabを用いる際は、名詞の表層形を取り出します。
xmlの読み込みは適当にパースします。
手軽に実験するために、Scikit-learnを使いこなさねばと思いました。
NaiveBayse, SVMによる文書分類
文書分類とは与えられた文書をあるカテゴリに分類することです。例えば、ニュース記事がスポーツか政治社会かということを分類します。
ここではフリーで入手可能なコーパスを用いて、文書分類の代表的な手法であるNaiveBayseとSVMを使います。
文書分類に用いる素性は、文書中の名詞のTF・IDF値としました。
TF・IDFは単純に説明すると、様々な文書で使われる語の重みは小さく、一部の文書でのみ使う語の重みを大きくするような、語に対する重みです。
もう少し踏み込むと、TF(語の頻度)とIDF(出現する文書数の逆数)の積となります。
以上の素性を用いて、NaiveBayseおよびSVMで分類を行います。
NaiveBayseの理解のためにgihyo.jpの記事を写経して作ったものがここにあります。(今回利用した訳ではありません。)
SVMはパターン識別器を与えられた正解データから作成する機械学習器です。
詳細は割愛します(というよりも詳しくはっきりは理解できていません。)
ソースコード
一部、独自の単語分割器が使用されています。MeCabを用いる際は、名詞の表層形を取り出します。
xmlの読み込みは適当にパースします。
結果
ナイーブベイズよりSVMのほうが4ポイントほど良い結果を示しました。感想
Scikit-learnを用いると意図も簡単に文書分類を試すことができました。手軽に実験するために、Scikit-learnを使いこなさねばと思いました。