Skip to content

Instantly share code, notes, and snippets.

View syou6162's full-sized avatar

Yasuhisa Yoshida syou6162

View GitHub Profile
;;; dabbrev-expand-multiple.el --- dabbrev-expand for multiple
;; Copyright (C) 2007 khiker
;; Author: khiker <khiker+elisp@gmail.com>
;; plus <MLB33828@nifty.com>
;; Keywords: dabbrev
;; This file is free software; you can redistribute it and/or modify
@syou6162
syou6162 / aitter.js
Last active August 29, 2015 14:07 — forked from moroya/aitter.js
(function(){
var total = {};
var year = '2012';
var all = false;
function init(num) {
if(typeof num !== 'number') {
num = 0;
$('<div/>').css({
position: 'fixed',
left: 0,
(function(){
var datePattern = new RegExp("(\\d{4})年(\\d{1,2})月(\\d{1,2})日");
function formatEntry(entry) {
entry.date.match(datePattern);
var year = RegExp.$1;
var month = RegExp.$2; if (month.length <= 1) month = "0" + month;
var day = RegExp.$3; if (day.length <= 1) day = "0" + day;
var item = entry.item.split("\"").join("\"\"");
return year + month + day + ",,," + entry.price + ",\"Amazon: " + item + "\"\n";
}
@syou6162
syou6162 / k_best_MIRA.md
Last active August 29, 2015 14:05
k-best MIRA

Hildreth algorithm

k-best MIRAはk=1のときはclosed-formで重み更新式が書けるが、k>1のときはclosed-formでは解くことができない。k>1のときに解が欲しければ、真面目にQPを解く必要がある。MSTParserの中で使われているQPを解くアルゴリズムにはHildreth algorithmが使われている。

Hildreth algorithm自体について説明しているWeb上のリソースはあまりないが、以下のサイトは雰囲気がつかめる。SMOのようにひとつの変数に着目して、それ以外は止めて一変数について最適化、というのを繰り返すようである。

Hildreth algorithmで出力されるのは双対変数なので、主問題の変数には変換する必要があることに注意。

参考になるプログラム

@syou6162
syou6162 / rand.clj
Created March 5, 2014 09:57
rand-intなどの関数に無理やり再現性を持たせる(seedを設定する)
(let [seed (java.util.Random. 1)]
(with-redefs [rand (fn [n] (* n (. seed nextDouble)))]
(mapv (fn [_] (rand-int 2)) (range 10))))
@syou6162
syou6162 / wip.md
Last active August 29, 2015 13:56
;; Clojureでのhashcodeの例
(hash "hoge") ; 3208229
;; clojureのvectorはよい
(hash [1 2 3]) ; 30817
;; javaの配列は毎回hashcodeが変わってしまうので注意
(hash (int-array [1 2 3])) ; 1628598432
(hash (int-array [1 2 3])) ; 1172445666
;; feature hashingの例
@syou6162
syou6162 / penn.clj
Created November 9, 2013 07:46
Clojure + Stanford ParserでS式を読み込んで色々操作する例
(import edu.stanford.nlp.trees.PennTreeReader)
(let [filename "/Users/yasuhisa/Desktop/PENN_TREEBANK3/PARSED/MRG/WSJ/00/WSJ_0001.MRG"]
(with-open [rdr (clojure.java.io/reader filename)]
(let [ptr (new PennTreeReader rdr)
trees (loop [result []]
(if-let [t (.readTree ptr)]
(recur (conj result t))
result))]
(for [^LabeledScoredTreeNode t trees]
#_(defdeps
[[org.clojure/clojure "1.5.1"]
[info.yasuhisay/clj-utils "0.1.1"]
[org.clojure/tools.cli "0.2.1"]])
(ns info.yasuhisay.dep-util
(:use [clojure.string :only (split)])
(:use [clj-utils.random :only (shuffle-with-random)])
(:require [clojure.tools.cli :as cli]))