タグ

ブックマーク / abicky.net (2)

  • Rails でも JSON.generate を使って高速にシリアライズしたい 〜Rails の to_json は遅いが何を実現しているのか〜

    Rails では JSON モジュールの提供している to_json を上書きしています。 JSON モジュールの to_json は C 言語のレイヤーで再帰処理しますが、Active Support の提供している to_json (ActiveSupport::JSON.encode) は Ruby のレイヤーで再帰処理する上、文字列の処理は毎回 ActiveSupport::JSON::Encoding::JSONGemEncoder::EscapedString を生成するので格段に遅くなります。 そのため、速度が求められる箇所での JSON のシリアライズには JSON.generate を使うことを検討すると良いです。 では、JSON.generate を使うべきでないケースにはどのようなものがあるのでしょう? ActiveSupport::JSON.encode が実現して

    Rails でも JSON.generate を使って高速にシリアライズしたい 〜Rails の to_json は遅いが何を実現しているのか〜
    akatakun
    akatakun 2023/02/27
    通常to_jsonはC言語、ActiveSupportによって上書きされるto_jsonはRubyなので便利になるけど遅い,\u2028や\u2029, >, <, &をエスケープする(恐らくJSやHTMLに埋め込まれることをケアする想定)
  • MeCab の形態素解析誤りを修正する生起コストの求め方

    「かつおたたき」、「りんごジュース」、「ロース肉薄切り」を MeCab + IPA 辞書で形態素解析すると以下のようになります。 % mecab かつおたたき かつ 接続詞,*,*,*,*,*,かつ,カツ,カツ お 接頭詞,名詞接続,*,*,*,*,お,オ,オ たたき 名詞,一般,*,*,*,*,たたき,タタキ,タタキ EOS りんごジュース りん 副詞,助詞類接続,*,*,*,*,りん,リン,リン ご 接頭詞,名詞接続,*,*,*,*,ご,ゴ,ゴ ジュース 名詞,一般,*,*,*,*,ジュース,ジュース,ジュース EOS ロース肉薄切り ロース 名詞,一般,*,*,*,*,ロース,ロース,ロース 肉薄 名詞,サ変接続,*,*,*,*,肉薄,ニクハク,ニクハク 切り 名詞,接尾,一般,*,*,*,切り,ギリ,ギリ EOS 日人の感覚とはだいぶずれた結果になってしまっていますね!人間であれ

    MeCab の形態素解析誤りを修正する生起コストの求め方
    akatakun
    akatakun 2018/11/08
    副作用を少なくするためにも生起コストは不必要に低くしたくないものです。
  • 1