Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Javaでつくる本格形態素解析器

6,331 views

Published on

形態素解析器といえば MeCab やそのクローンの Kuromoji が有名ですが、辞書が古かったり前処理、後処理が必要だったりしていろいろ面倒があります。そこで全文検索をメインターゲットに、正規化や補正処理などのよく使われる処理が入って商業利用にも耐えうる形態素解析器をつくりはじめました。このセッションでは形態素解析器に要求される性能要件とそれを満たすための工夫についてお話しします。

Published in: Technology

Javaでつくる本格形態素解析器

  1. 1. Javaでつくる本格形態素解析器 ワークスアプリケーションズ株式会社 ワークス徳島人工知能NLP研究所 高岡 一馬
  2. 2. 自己紹介 高岡 一馬 株式会社 ワークスアプリケーションズ ワークス徳島人工知能NLP研究所 元 茶筌メンテナ 過去4つの形態素解析 器開発にたずさわる コーパス開発 かな漢字変換 テキストマイニング
  3. 3. 3 とは形態素解析
  4. 4. 4 な の伝統的 自然言語処理 階層 応用技術 情報検索 翻訳 日本語校正 要約 レビュー解析 英文校正 情報抽出 Web応用 対話 要素技術 言い換え 語義曖昧性解消 固有表現抽出 照応解析 知識獲得 基礎技術 形態素解析 構文解析 述語項構造解析 Project Next NLPの資料を一部改変
  5. 5. 5 の形態素解析 3要素 Segmentation – テキストを分割 – にわとり/は/飛ば/ない Stemming (Lemmatization) – 語形を辞書形に – 飛ば → 飛ぶ Part-of-speech Tagging – 品詞を付与 – にわとり(名詞)/ は(助詞)/ 飛ば(動詞)/ ない(助動詞)
  6. 6. 6 その の他 機能 表記正規化 – 送りがな – 異体字 み読 付与 – 読みがな、発音 – 連濁 派生 – 可能動詞 – 自動詞、他動詞 ● 申し込み ● 申込み ● 申込 ● 高岡 ● 髙岡 ● 書ける ● 書く ● 開く ● 開ける
  7. 7. 7 形態素解析器 Sudachi
  8. 8. 8 Sudachiの特長 の の複数 分割単位 併用 – 必要に応じて切り替え – 形態素解析と固有表現 抽出の融合 の多数 収録語彙 – UniDicとNEologdを ベースに調整 なメンテナンス継続的 – 10年以上はつづけたい のプラグイン機能 化 – 自由に機能追加 との同義語辞書 連携 – OSSで公開予定
  9. 9. 9 Sudachiと システムとの他 比較 Sudachi MeCab kuromoji 分割単位の併用 ○ × △¹ 文字正規化、表記正規化 ○ × △² まとめ上げ、補正処理 ○ × △² 複数ユーザー辞書の利用 ○ ○ × 省メモリ ◎ △ ○ 解析精度 ○ ○ ○ 解析速度 △ ○ △ 1) n-best解による近似 2) Luceneフィルター併用
  10. 10. 10 C単位 医薬品安全管理責任者 B単位 医薬品 安全 管理 責任者 A単位 医薬 品 安全 管理 責任 者 の を複数 分割単位 出力 分割単位 – A単位 UniDic短単位相当 – B単位 中間ぐらいの単位 – C単位 固有表現 それぞれの で や が単位 出力 再分割 可能
  11. 11. 11 表記正規化 送りちがい 打込む → 打ち込む 字種 かつ丼 → カツ丼 異体字 附属 → 付属 誤用 シュミレーション → シミュレーション 縮約 ちゃあ → ては 活用 歩か(ない) → 歩く 派生 書ける → 書く
  12. 12. 12 プラグイン ステップをフックして を し む各処理 処理 差 込 – 入力テキスト 異体字統制、表記補正 – ラティス 未知語処理、品詞接続禁制 – 出力解 数詞正規化、人名処理 ユーザーが にプラグインを できる自由 作成 – 独自の未知語処理 – 品番、型式などの抽出
  13. 13. 13 の メモリ大規模使用時 省 化 イメージをメモリ で辞書 上 共有 – インスタンス間、プロセス間で共有 JVM1 JVM2
  14. 14. 14 メモリの省 工夫
  15. 15. 15 の辞書 構造 メモリのボトルネックは辞書 – 約270万語を収録 – 今後もふえる予定 メモリかつ に省 高速 検索 – Darts-clone(ダブル配列)のJava cloneを作成 – https://github.com/s-yata/darts-clone まだまだ の はありそう削減 余地
  16. 16. 16 Memory Mapped Fileの利用 プロセス で メモリ を間 物理 空間 共有 仮想メモリ空間 物理メモリ空間 ディスク プロセスA プロセスB
  17. 17. 17 のメモリ実際 使用量 MB
  18. 18. 18 Memory Mappingの代償 Javaっぽい がつくれない構造 – ファイルイメージがそのままメモリ上に 読み出すたびにStringに仕立てなおす き みができない書 込 – Read OnlyでopenするとMapMode.PRIVATEにできない – 一部だけメモリを確保して差し替える 03 71 67 ac 4e fd 90 文字列長 東 京 都
  19. 19. 19 いろいろ公開中 Sudachi – https://github.com/WorksApplications/Sudachi Elasticsearch プラグイン – https://github.com/WorksApplications/elasticsearch-sudachi SudachiPy (Python clone) – https://github.com/WorksApplications/SudachiPy SyncThought でのご様 利用例 – https://www.syncsearch.jp/

×