eclipse JUnit Unit test

Install JUnit

  1. Download junit-4.10.jar from http://sourceforge.net/projects/junit/files/junit/4.10/ to workspace/your-project/lib/
  2. start eclipse
  3. select your-project top node
  4. right click
  5. select [Refresh]
  6. select your-project top node
  7. right click
  8. select [Property]
  9. select [Java Build Path]
  10. select [Libraries] tab
  11. click [add JARs]
  12. select lib/junit-4.10.jar
  13. click [OK]

generate unit-test

  1. select your class(want test)
  2. right click
  3. [New] -> [JUnit test case]
  4. [Finish]

run unit-test

  1. right click generated (edited) unit-test class
  2. [run as] -> [JUnit Test]

unit-test example

test this class

public class ChangeNum {
  public static void main(String[] args) {
    ChangeNum cn1 = new ChangeNum();
    cn1.changeNum(args[0]);
  }

  int changeNum(String s1) {
    int n1 = Integer.parseInt(s1);
    return n1;
  }
}
  1. select this class
  2. right click
  3. [New] -> [JUnit test case]
  4. [Finish]
  5. edit generated file as:
import junit.framework.TestCase;

public class ChangeNumTest extends TestCase {
  public ChangeNumTest(String name) {
    super(name);
  }
 
  public void testChangeNum() {
    String ts1 = "100"; 
    int tn1 = 100;
    ChangeNum tcn1 = new ChangeNum(); 
    int test1 = tcn1.changeNum(ts1); 
    assertEquals("Error not number type", tn1, test1); 
  }
}
  1. right click ChangeNumTest class
  2. [run as] -> [JUnit Test]

run all unit-test

  1. select your packege
  2. right click
  3. [new]->[other]->[java]->[JUnit]->[JUnit Test Suite]->[Next]
  4. click [select All]
  5. click [Finish]

Use git in eclipse

create git repository

  1. Select your project top node
  2. Right Click
  3. [Team] -> [Share Project]
  4. select [Git]
  5. check [Use or create repository in parent folder of project]
  6. select your project folder
  7. Click [Create Repository]
  8. Click [Finish]

add file to git

  1. select file
  2. Right Click
  3. [Team] -> [Add to index]

browse git repository

  1. [Window]-> [Open perspective]->[other]
  2. select [Git]

LDA

LDAのリンクいろいろ

ソフトウェア

応用

拡張

CRF++

CRF++の使い方などのまとめ

CRFの原理

CRF++の使い方解説

CRF 応用

CRF++以外のCRF実装

CRF++の使い方の練習

CRF++を実際に動かして使い方の練習をする

簡単のため、次の1つの要素のみのtemplateファイルを使う

  • template
U02:%x[0,0]

このtemplateを使って次の学習データを学習する

  • train.data
A +
A +
A +
B -
B +
B +
C +
X -
X -
Y -
Z -

次のコマンドで学習を行う

$ crf_learn  -t template train.data   model

学習結果は以下のようなファイルとなる

  • model.txt
version: 100
cost-factor: 1
maxid: 12
xsize: 1

+
-

U02:%x[0,0]

0 U02:A
2 U02:B
4 U02:C
6 U02:X
8 U02:Y
10 U02:Z

0.6462678961244115
-0.6462678961244128
0.2016113127964356
-0.2016113127964371
0.3374158284496933
-0.3374158284496931
-0.5213066287709371
0.5213066287709373
-0.3374158284496930
0.3374158284496934
-0.3374158284496929
0.3374158284496936

この学習結果を次のテストファイルに適用する

test.data

A +
X -
B +
C +
$ crf_test -v2 -m model test.data

次の実行結果を得る

# 0.230404
A	+	+/0.784576	+/0.784576	-/0.215424
X	-	-/0.739354	+/0.260646	-/0.739354
B	+	+/0.599462	+/0.599462	-/0.400538
C	+	+/0.662584	+/0.662584	-/0.337416

Aの答えが+か-のどちらにラベルになるかの確率

+/0.784576	-/0.215424

は、学習データ中の最初の2つの数値

0.6462678961244115
-0.6462678961244128

で決まる。これを手計算してみる。

p=exp(0.6462678961244115);
n=exp(-0.6462678961244128);
p/(p+n) =  .7845760890555549;
n/(p+n) =  0.215423910944445

となりcrf_testの結果と一致した。
Bについても学習データの

0.2016113127964356
-0.2016113127964371

から計算すると同じ様に計算できる。

CRF++の練習その2

次の入れ替えをした学習データで同じ事をしてみる
A:2 B:3 C:4 X:7 Y:8 Z:9

  • train.data
2 +
2 +
2 +
3 -
3 +
3 +
4 +
7 -
7 -
8 -
9 -

学習結果も名前が入れ替わっただけの同じものになる。
今度は学習データにない 0 5 を入力するとどうなるか確かめる

  • test.data
2 +
9 -
0 +
5 -

結果は以下のようになり 0,5は確率0.5でどちらともいえない結果になった

# 0.129962
2	+	+/0.784576	+/0.784576	-/0.215424
9	-	-/0.662584	+/0.337416	-/0.662584
0	+	+/0.500000	+/0.500000	-/0.500000
5	-	+/0.500000	+/0.500000	-/0.500000

CRF++は数値データの補完が出来ないことを確認した

nltk 学習用リンク

テザリング

Linux(Gnome2)から使う場合に上記よりもやや簡単な方法を発見した

  1. 記事と同じようにiphoneをセットアップ
  2. gnome無線LANアイコンを右クリックして無線LAN管理GUIメニューを次のように開く
    • 接続を編集する → 無線 → 追加 → 
      • モード アドホック 
      • IP4タブでiphoneテザリングソフトに表示されてるipと1つずらしたアドレスを設定
        • 例えばテザリングソフトでiphoneのアドレスが10.0.0.10と表示してるならパソコン側のIP4設定は10.0.0.11の255.255.255.0で他は空白
    • 新規接続に適当な名前を設定して保存
  3. 無線LANのアイコンを左クリック → 表示されていない無線LANネットワークに接続 → 設定したネットワーク名を選択でadhocネットワークが起動
  4. iphoneを設定したネットワークに接続
  5. パソコン側firefoxのproxyを上記記事と同じように設定

以上で接続できた。gentoo linuxで動作を確認。KDE4などでも同様にGUIだけでテザリング設定できると思われる

proxychains

firefoxの設定しなくても以下でも接続できる

/etc/proxychains.conf

localnet  10.0.0.0/255.255.255.0
socks5 10.0.0.10 8888

usage

proxychains ssh hoge@example.com

tsocks

/etc/socks/tsocks.conf

local = 10.0.0.0/255.255.255.0
server = 10.0.0.10
server_type = 5
server_port = 8888
#tordns_enable = false
usage
# nano /etc/hosts
ipaddress example.com
$ tsocks ssh hoge@example.com