きゃべログ

プログラミングや電子工作などについての記事がほとんどです

英語論文の最初の一歩に「英文書類や英語論文で必須の基本表現」

0 件のコメント

研究で英語論文を書くことになりました。現状英語にあまり自信がないため、最低限わきまえるべき事項をおさえたいと思いこの本を読みました。

英文書類や英語論文で必須の基本表現
篠田 義明
南雲堂
売り上げランキング: 704,286

この本は英語書類や英語論文など、口語より堅い英語が求められる場でかなり活きる本だと思います。30のセクションに別れており、それぞれに英語論文を書くにおいて気をつけるべき1つのトピックが書かれています。また、いずれのセクションについてもインプットするための文書の後に練習問題がついており、実際にアウトプットすることで効果的に身につけられる構成となっています。

実はこの練習問題は、大学の講義で課題として出題されたものです。解答ページには著者による解答例だけでなく、課題提出者のよくある誤答例、正答数などが具体的に示されています。また、それぞれに補足説明もあるので理解をさらに深めることが可能です。

インプットの書き方がとても良いです。例えば、「論文において、so,butばかりでは幼稚っぽくなってしまうから気をつける」とよく言われますが、この問題について、どうしてこの記述が問題なのか、改善方法は何なのか、というところがしっかり書かれています。文章量もそこまで多くなく気軽に読めるのに対し、インプットできることは多い一冊になっています。

この本では、より明確に、簡潔に書ける方法を解説しています。どのように書けば伝わりやすいか、何が伝えたいのかを明確にするという書き方を推奨し、トレーニングしてくれるので、英語だけでなく日本語にも応用が効きます。日本語にせよ英語にせよ、意図が掴みづらい文章を書いてしまっていることに悩んでいる方には最適です。

初めて英語による書類作成・論文執筆をされる方で不安を持たれている方には是非おすすめしたい一冊です。

0 件のコメント :

コメントを投稿

【GAS】HtmlServiceのNative, Emulated modeに終了予告

0 件のコメント

Google Apps Script Advent Calendar 201510日目の記事です。カレンダーを埋めるマンとして活躍したいと思います。1日目の@soundTrickerさんがGASの2015年の歩みについて書かれた記事と重複する部分もありますが、以前から書きたかったHtmlServiceの仕様変更のお話を書きたいと思います。

先日、12月18日にGoogleさんからこのようなメールが届きました。このメールはGASでHtmlServiceのNATIVE,EMULATEDモードを使用している人に宛てて送信されているようです。

Please migrate your HtmlService from NATIVE and EMULATED modes to IFRAME sandbox mode.
NATIVE and EMULATED HtmlService modes will be turned off on June 16, 2016.
You are receiving this email because you have an Apps Script project which uses the Native or Emulated mode for HTMLService.
In December 2014, we announced the IFRAME sandbox mode for HtmlService which improves the application’s user interface speed.
Please migrate to IFRAME sandbox mode since it provides a faster UIs and has more capabilities than NATIVE and EMULATED modes.
Much more detail, including a migration guide is available in thisblog post.
Thank you,
The Google Apps Launch Team

要するに、HtmlServiceのNATIVEモードとEMULATEDモードは2016年の6月16日に機能停止するから、IFRAMEサンドボックスモードに変更したほうが良いよという連絡でした。

Apps Script Sunset Schedule | Apps Script | Google Developers
こちらのサポートページを確認したところ、少し期限に関する情報が変更されたようです。移行スケジュールを表にまとめてみます。

日付 内容
2015/11/12 新規スクリプトのデフォルト設定がNATIVEモードからIFRAMEサンドボックスモードに変更
2015/12/10 EMULATEDモードが終了し、すべてのスクリプトはデフォルトでIFRAMEモードにするよう要求
2016/4/28 既存のスクリプトを含め、すべてのスクリプトのデフォルトのデフォルト設定がNATIVEモードからIFRAMEモードに変更
2016/6/30 NATIVEモードは終了し、すべてのHTML Serviceから提供されるHTMLはIFRAMEモードに変更

高速なUIを利用するためにもIFRAMEモードをGoogleは推奨しているようですね。というわけで気をつけましょう。

こちらにIFRAMEサンドボックスモードに移行する方法が詳しく掲載されています。
Migrating to IFRAME Sandbox Mode | Apps Script | Google Developers

0 件のコメント :

コメントを投稿

C#で使える機械学習ライブラリ「Accord.NET」

2 件のコメント

この記事はC# Advent Calender 2015の4日目です。

基礎的なことを書きます。なんてコメントをしていましたが、記事公開日前日にC#に機械学習ライブラリで有名なものがあったかな?という疑問が突然浮かんできたのでこのようなタイトルの記事を書くことにしました。

C#で機械学習をするということ

機械学習をする言語といえば、scikit-learnという機械学習ライブラリやNumPy, SciPy, matplotlibなどの数値計算、グラフ描画のライブラリが充実しているPythonが有名です。他にデータマイニング用のソフトウェアWEKAの実装言語として使用されているJavaも選択肢の一つですね。

また、Googleが2015年11月10日にオープンソースとしてリリースしたTensorFlowという機械学習ライブラリは、Python ,C++から利用可能です。

この現状から、機械学習は圧倒的にPython優勢という土俵と言えますが、これまでC#を使ってきた私としてはC#でも機械学習をやってみたい。そんなモチベーションでこの記事を書きました。

パターン認識と機械学習 上
C.M. ビショップ
丸善出版
売り上げランキング: 28,712

C#で使える機械学習ライブラリ「Accord.NET Framework」

Accord.NET Machine Learning Framework

今回紹介するライブラリはAccord.NET Frameworkというライブラリです。こちらは機械学習に関するオープンソースのライブラリ群で、統計処理や行列計算、ニューラルアルゴリズム、信号処理、画像解析などやりたいことはこれで大体できそうなくらい充実しているようです。胸が高鳴りますね。なお、2015年12月3日現在バージョン3.0が公開されています。githubではソースを見ることも可能です。

できることの一例を紹介

ディープラーニング

深層ニューラルネットワーク、いわゆるディープラーニングを利用することができます。こちらはディープラーニングを利用した文字認識のアプリケーションの例です。

SVM(サポートベクタマシン)

分類器の一種であるSupport Vector Machineを使うこともできます。こちらも文字認識の例です。

ジェスチャコントローラ

画像認識の技術を用いてジェスチャ認識することも可能です。 こちらの例は顔の向きを解析し、ジェスチャとして認識するアプリケーション例です。

HMM(隠れマルコフモデル)

タッチインターフェースのジェスチャ認識をHMMを使用して実装している例です。C#という性質を生かしてWindows PhoneのアプリケーションやWindowsタブレット端末への応用ができそうですね。

カーネル判別分析

カーネル判別分析によりデータの分類もできます。

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
比戸 将平 馬場 雪乃 里 洋平 戸嶋 龍哉 得居 誠也 福島 真太朗 加藤 公一 関 喜史 阿部 厳 熊崎 宏樹
技術評論社
売り上げランキング: 3,836

サンプルコードを試してみる

Classification · accord-net/framework Wiki

公式ページのサンプルコードを実際に動かしてみたいと思います。環境はVisualStudio 2013を想定しています。

まずはグラフを表示するところから

プロジェクトの作成

C#のコンソールアプリケーションを作成しましょう。 今回プロジェクト名はAccordNetTestとします。

Accord.Net Frameworkのインストール

ツールバーのプロジェクト(P)>NuGetパッケージの管理を選択します。 左カラムのオンラインを選択したのち、検索窓にaccordと入力しましょう。そこから

  • Accord.Controls
  • Accord.Math
  • Accord.IO をインストールしましょう。 ひょっとすると依存関係の都合で同時に何かインストールされるかもしれませんが、気にしなくて大丈夫です。

使用するExcelデータの配置

こちらから今回使用するサンプルのExcelシートを保存します。配置位置はAccordNetTestプロジェクトの bin/Debug/ディレクトリに配置します。

なお、このデータには2次元の数値データと、そのデータの分類の正解のクラス(ラベリング)が記録されています。

ソースコード

Program.csを次のように編集します。便宜上公式のサンプルコードを少し変更しています。

using System.Data;
using System.Windows;

using Accord.Controls;
using Accord.IO;
using Accord.Math;

namespace AccordNetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //エクセルシートの読み込み
            DataTable table = new ExcelReader("examples.xls").GetWorksheet(1);

            //データテーブルから2次元ベクトルに変換
            double[][] inputs = table.ToArray<double>("X", "Y");
            int[] outputs = table.Columns["G"].ToArray<int>();

            //データをプロットする
            ScatterplotBox.Show("Yin-Yang", inputs, outputs).Hold();
        }
    }
}

ScatterplotBox.Show(string title, double[][] x, int[] z)の各引数は title:グラフのタイトル、x:(x,y)のデータのペア、z:xに対応するラベル、を意味しています。つまりinputにはX,Yのデータの対を格納し、outputにはそのラベルを格納しています。

参照の追加

このまま実行すると「参照されていないアセンブリで定義されています」といったエラーが表示されるかと思います。これはScatterplotBoxというAccord.NETのクラスがSystem.Windows.Formを継承しているためです。またdoubleの二次元配列を使用するためにSystem.Numerics.Complexを参照するみたいです。なのでツールバーのプロジェクト(P)>参照の追加(R)からSystem.NumericsSystem.Windows.Formsの参照を追加します。

実行

実行すると、データはエクセルで定義されたクラス通りプロットされたグラフが表示されます。

ナイーブベイズで分類してみる

先ほどのソースコードを少し編集し、Accord.NETライブラリを活用してデータを分類器にかけてみます。 今回試してみるのはNaive Bayesで、機械学習を勉強した時に初めて目にする分類器だと思います。日訳で単純ベイズ分類器というだけに、ベイズの定理で表せるシンプルな分類器です。

ソースコード

公式サンプルコードのまま実行するとエラーがでます。バージョンアップによる仕様変更が原因だと思いますが、それをサクっと解消して実行しましょう。

using System.Data;
using System.Windows;

using Accord.Controls;
using Accord.IO;
using Accord.Math;
using Accord.Statistics.Distributions.Univariate;
using Accord.MachineLearning.Bayes;

namespace AccordNetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //エクセルシートの読み込み
            DataTable table = new ExcelReader("examples.xls").GetWorksheet(1);

            //データテーブルから2次元ベクトルに変換
            double[][] inputs = table.ToArray<double>("X", "Y");
            int[] outputs = table.Columns["G"].ToArray<int>();

            // 2入力の分類器を作成
            var nb = new NaiveBayes<NormalDistribution>(classes: 2,
                inputs: 2, initial: new NormalDistribution());

            // ナイーブベイズ分類器はクラスのラベルが0から始まる自然数である必要がある。
            // そのため、-1のラベルを0に変換する。
            outputs = outputs.Apply(x => x < 0 ? 0 : x);

            // ナイーブベイズの度数分布表を初期化
            double error = nb.Estimate(inputs, outputs);

            //構築したモデルでサンプルデータを分類
            int[] answers = inputs.Apply(nb.Compute);

            // 結果をプロット
            ScatterplotBox.Show("Expected results", inputs, outputs);
            ScatterplotBox.Show("Naive Bayes results", inputs, answers)
                .Hold();
        }
    }
}

実行

実行すると2つのウィンドウが表示されます。 Expected resultsという名前のウィンドウには先ほど表示したものと同じ正解のグラフが、 Naive Bayes resultsという名前のウィンドウにはNaiveBayesで分類した結果のグラフが表示されます。

事例+演習で学ぶ機械学習 ビジネスを支えるデータ活用のしくみ
速水 悟
森北出版
売り上げランキング: 14,321

サンプルが動いたら

今回動かしてみたのは分類問題ですが、画像処理や音声信号処理など色々できるので公式ドキュメントを読んで色々遊んでみてください!

Sample gallery - Accord.NET Machine Learning in C#
公式のサンプルが非常に充実しています。 是非参考にしながら使ってみてください。

Framework modules
また、リファレンスが詳しく丁寧に書かれているので困ったらこれを読むといいと思います。

まとめ

今回初めてAccord.NETというライブラリを触ってみましたが、簡単なコードで機械学習を実装できます。 ちょっと凝ったアプリケーションを作ってみたい人や、研究における検証にも使えるのではないでしょうか。 今後Unityのコードに埋め込んで活用するという例も出てきそうですね。(出来るかはよくわからない) 以上C#コーダのための機械学習ライブラリの紹介でした。

ITエンジニアのための機械学習理論入門
中井 悦司
技術評論社
売り上げランキング: 1,911

2 件のコメント :

コメントを投稿