Page List

Search on the blog

2016年3月22日火曜日

知ってると便利なSTL(13)tuple

make_tupleで変数をまとめてタプルにすることができる。
get<i>()でタプルのi番目の要素を取得できる。
tieでタプルの中身を展開して変数に代入できる。
これは便利。
#include <tuple>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  auto t = make_tuple(1, 0.5, "hoge");

  cout << get<0>(t) << endl;
  cout << get<1>(t) << endl;
  cout << get<2>(t) << endl;

  int a;
  double b;
  string c;
  tie(a, b, c) = t;
  cout << a << " " << b << " " << c << endl;
  
  return 0;
}

2016年3月18日金曜日

mecab-ipadic-neologdはすごい

mecab-ipadic-neologdとは

MeCab用のシステム辞書。
頻繁に更新されており、MeCab標準辞書には無い新語も登録されている。

インストール方法

公式ページのとおり。
一応やったことを書いておく。
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd/
./bin/install-mecab-ipadic-neologd -n

比較

mecab-ipadic-neologdを使った時、使わなかったときの比較をしてみる。
まずはmecab-ipadic-neologdを使わなかった場合。AKB48とか、推しメンとか、ぱるるが一つの語として分かち書きされていない。
$ mecab
AKB48の推しメンを問われていたら、ぱるると答えたでしょう。
AKB 名詞,一般,*,*,*,*,*
48 名詞,数,*,*,*,*,*
の 助詞,連体化,*,*,*,*,の,ノ,ノ
推し 動詞,自立,*,*,五段・サ行,連用形,推す,オシ,オシ
メン 名詞,一般,*,*,*,*,メン,メン,メン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
問わ 動詞,自立,*,*,五段・ワ行促音便,未然形,問う,トワ,トワ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
、 記号,読点,*,*,*,*,、,、,、
ぱるると 名詞,一般,*,*,*,*,*
答え 動詞,自立,*,*,一段,連用形,答える,コタエ,コタエ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
でしょ 助動詞,*,*,*,特殊・デス,未然形,です,デショ,デショ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
。 記号,句点,*,*,*,*,。,。,。
EOS
次にmecab-ipadic-neologdを使った場合。何これ、すごーい。
$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/
AKB48の推しメンを問われていたら、ぱるると答えたでしょう。
AKB48 名詞,固有名詞,人名,一般,*,*,AKB48,エーケービーフォーティエイト,エーケービーフォーティエイト
の 助詞,連体化,*,*,*,*,の,ノ,ノ
推しメン 名詞,固有名詞,一般,*,*,*,推しメン,オシメン,オシメン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
問わ 動詞,自立,*,*,五段・ワ行促音便,未然形,問う,トワ,トワ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
、 記号,読点,*,*,*,*,、,、,、
ぱるる 名詞,固有名詞,一般,*,*,*,ぱるる,パルル,パルル
と 助詞,格助詞,引用,*,*,*,と,ト,ト
答え 動詞,自立,*,*,一段,連用形,答える,コタエ,コタエ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
でしょ 助動詞,*,*,*,特殊・デス,未然形,です,デショ,デショ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
。 記号,句点,*,*,*,*,。,。,。
EOS