ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

「subword-nmt」を無理やりPythonから呼んで実行する

スポンサードリンク

github.com

基本コマンド実行を想定されて組まれていますが、PythonでできているからPythonから叩けるんじゃね?って思ったので試したら結構難しい。。。

とりあえず試行錯誤のすえ、うまくいった感じのログだけ残す

qiita.com

from subword_nmt.learn_bpe import learn_bpe
import sys


input_data = """吾輩 わがはい は 猫 で ある 。 名前 は まだ 無い 。
どこ で 生れ た か とんと 見当 けん とう が つか ぬ 。 何 でも 薄暗い じめじめ し た 所 で ニャーニャー 泣い て いた事 だけ は 記憶 し て いる 。 吾輩 は ここ で 始め て 人間 という もの を 見 た """

sys.stdin = input_data.split('\n')
learn_bpe(infile=sys.stdin, outfile=sys.stdout, num_symbols=3000, min_frequency=2, verbose=True,  is_dict=False, total_symbols=False)

# 実行すると下記出力される
# #version: 0.2
# 吾 輩</w>
# ニ ャ

僕が試した結果が、qiita記事の結果と違うのはなぜかわからんが、とりあえずこれで動いたっぽさ。ただ、 sys.stdin を直接上書きしているので何が起こるかはわからない....