Skip to content

技術選定

Hoshi Ran edited this page Mar 12, 2022 · 8 revisions

形態素解析ライブラリ

採用

Rust 製形態素解析ライブラリを WebAssembly に変換して利用する方法。 lindera は kuromoji-rs の開発をライブラリターゲットとして引き継いだものらしい。 Rust初心者がRust製の日本語形態素解析器の開発を引き継いでみた - Qiita

JavaScript より WebAssembly の方が速そうという安直な考えと単に使ってみたかったという思いで採用。 ただ、いざ作ってみると、トランスパイル後の .wasm ファイルが 70MB もあるという問題に気づいちゃう。 そのせいかは不明だが、Canvas 生成時にたびたび Out of Memory を起こす。 wordcloud での利用なので形態素解析の正確さはそこまで必要なく、精度より軽量さ重視の選定に変更しようかなと思案中。

今回は使っていないが lindera-js なる lindera のラッパーライブラリも一応あった。

候補

JavaScript 製

  • kuromoji.js

    元々 Java 製の kuromoji を JavaScript に移植したもの。 辞書には品詞情報も含まれるので 17MB もあるらしい。

  • tiny-segmenter

    辞書を持たず機械学習ベースで学習する。辞書データがない分軽量。

Rust -> WebAssembly

  • Yoin

    IPADICを形態素辞書として組み込んだFST(Finite-state transducer)を利用した日本語形態素解析器。

  • kuromoji-rs

    IPADICを形態素辞書として組み込んだFST(Finite-state transducer)を利用した日本語形態素解析器。 トークナイザにKuromojiのsearchモードと同じ機能を実装している。 PoC 的なプロジェクトらしく、開発は lindera に引き継がれた。

  • sudachi.rs

    元々は Java 製の Sudachi の Rust 版。

Word Cloud 描画ライブラリ

採用

wordcloud2.js

生成は HTML DOM でも Canvas 要素でもできる。 オプション が豊富で、白黒画像を使ってマスクできるのが d3-cloud にない強み。 デモページがあるのが良き。

候補

  • d3-cloud

    動的コンテンツを描画するJavaScriptライブラリ D3.js を用いている。

  • react-d3-cloud

    d3 cloud を描画する react コンポーネント。

  • react-wordcloud

    d3 cloud を描画する react コンポーネント。 react-d3-cloud よりもオプションが多そう。 ドキュメントがしっかりしとる。