Nimで無理やりMeCab連携してみる

前置き

おはこんばんにちは!
Nim言語大好きな人です。

前回、無理やりPHPでMeCabを動かしました
なので今回は無理やりNimでMeCabを動かしていこうと思います!

MeCabの導入などは、以前の「PHPを使って形態素解析と文章の類似度を出してみる」をご覧くださいませ。

NimとMeCabの連携

import std/osproc

let text = "すもももももももものうち"

let result = execCmdEx("echo " & text & " | mecab")

echo result.output

以上です!!

……と、やってしまうとめっちゃ短いので、ちょっと改造していきます。

エスケープ処理

import std/osproc

let text = "すもももももももものうち"

let result = execCmdEx("echo " & text & " | mecab")

echo result.output

上記のコードだと変数textに、let text = "hoge; ls -la; exit 0"みたいな文字を指定されてしまうと、任意のコマンドが実行できてしまいます。
これはよくない!

ということでエスケープします。

import std/osproc, std/strutils

let text = escape("hoge; ls -la; exit 0")

let result = execCmdEx("echo " & text & " | mecab")

echo result.output

hoge    名詞,固有名詞,組織,*,*,*,*
;       名詞,サ変接続,*,*,*,*,*
ls      名詞,一般,*,*,*,*,*
-       名詞,サ変接続,*,*,*,*,*
la      名詞,一般,*,*,*,*,*
;       名詞,サ変接続,*,*,*,*,*
exit    名詞,一般,*,*,*,*,*
0       名詞,数,*,*,*,*,*
EOS

これでエスケープされました!

では今回はこのあたりで!