Created
May 2, 2013 14:24
-
-
Save hankei6km/5502554 to your computer and use it in GitHub Desktop.
Node.js から libkkc を利用してみるテスト. 実際には Python(PyGObject) のスクリプトを経由して、結果を受け取る.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Node.js から libkkc を利用してみるテスト. | |
* 実際には Python(PyGObject) のスクリプトを経由して、結果を受け取る. | |
* Usage: node node-libkkc.js <SENTENCE> | |
*/ | |
var path = require('path'); | |
var spawn = require('child_process').spawn; | |
var bufConcat = function(src, data){ | |
var len = src.length; | |
var ret = new Buffer(len + data.length); | |
src.copy(ret, 0, 0); | |
data.copy(ret, len, 0); | |
return ret; | |
} | |
var print_segments = function(segments){ | |
segments.forEach(function(segment){ | |
var out = ''; | |
segment.forEach(function(item){ | |
out = out + item.output + ' '; | |
}) | |
console.log(out); | |
}); | |
} | |
var decode = function(sentence, cb){ | |
var script = path.join(__dirname, 'node-libkkc.py'); | |
var kkc = spawn('python', [script, sentence]); | |
var stdout = new Buffer(0); | |
var stderr = new Buffer(0); | |
kkc.stdout.on('data', function(data){ | |
stdout = bufConcat(stdout, data); | |
}); | |
kkc.stderr.on('data', function(data){ | |
stderr = bufConcat(stderr, data); | |
}); | |
kkc.on('exit', function(code){ | |
cb(code, stdout, stdout); | |
}); | |
}; | |
decode(process.argv[2], function(err, stdout, stderr){ | |
if(!err){ | |
try{ | |
var segments = JSON.parse(stdout.toString()); | |
print_segments(segments); | |
}catch(e){ | |
console.log(e); | |
} | |
}else{ | |
console.log(stderr); | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- encoding: utf-8 -*- | |
""" libkkc の decode 結果を JSON 文字列として出力する. | |
""" | |
import sys | |
import json | |
from gi.repository import Kkc | |
Kkc.init() | |
model = Kkc.LanguageModel.load ("sorted3"); | |
decoder = Kkc.Decoder.create(model); | |
segments = decoder.decode(sys.argv[1], 1, []); | |
segments_array = [] | |
for segment in segments: | |
segment_array = [] | |
segments_array.append(segment_array); | |
while segment is not None: | |
segment_array.append({ | |
'input': segment.get_property('input'), | |
'output': segment.get_property('output') | |
}) | |
segment = segment.next | |
print(json.dumps(segments_array)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment