ホットな日本語技術の(ちょっとした)お勉強。
TRANSCRIPT
ホットな日本語技術の(ちょっとした)お勉強。
オープンソースカンファレンス 2015 Niigata2015/9/5 はしもとまさひこ
簡単に自己紹介。
● 東海道らぐ(Tokaido Linux User Group)案内人– 東京〜静岡〜名古屋〜京都〜大阪で活動するらぐ。– 今日は新潟ってことでおやすみ^^;
● ちびぎーこ保護者会(別名日本openSUSEユーザ会)の人
● 大学では文学部卒ってことで最近日本語入力についていろいろ勉強している人
まず、質問です(^^)
これからいくつか質問をします。
ご協力をお願いします!
Q1.日本語入力ソフトを意識して使っていますか?
1. 自分はこれしか使わない!というソフトがある (※MS-IME, ATOK, Google日本語入力等)
2. ソフトは知らないけど優れたソフトを使いたい!
3. 特に意識したことはない
注: OSとか関係なく回答ください
Q2. OSSなOSをデスクトップで使っていますか?
1. Linux, BSD等をデスクトップで使ってます!
2. デスクトップはMacしか使わないよ!
3. デスクトップはWindowsに決まってるでしょ!
注: 正直に回答ください(^^)
というわけで、本日のアジェンダ
● Linuxの日本語入力についてお勉強– かな漢字変換システムとインプットメソッドとは?
● 最近の日本語技術ってどうなの?– 今時の日本語変換ソフトで使われる技術とは?
● まとめ。– おーぷん万葉プロジェクトについて
1. Linux日本語入力についてお勉強
Q. またまた質問です^^
この中で聞いたことがある用語があったら挙手!
● IBus (アイバス)
● Fcitx (ファイティックス)
● Anthy (アンシー)
● mozc (モズク)
● libkkc (リブカカシ)
● FreeWnn (フリーウンヌ) ←どさくさ紛れに混ぜてみたw
実はこれらは・・・
今時のLinuxデスクトップには必ず(?)入ってます!● インプットメソッド
– IBus : Redhat, Fedora, openSUSE 等
– Fcitx : Ubuntu, VineLinux 等● かな漢字変換システム
– Anthy : openSUSE 等
– mozc : Debian, Ubuntu, openSUSE 等
– libkkc : Redhat, Fedora 等
(FreeWnnは・・・。 ←先月のOSC京都では知名度抜群でしたw)
インプットメソッドとかな漢字変換
Linuxではこんな感じで変換しています
インプットメソッド かな漢字変換システム
IBus, Fcitx, UIM 等
Anthy, mozc, kkc,SKK, Canna, FreeWnn 等キー入力 ひらがな, ローマ字等
変換した日本語画面出力
サーバー・クライアント型をイメージしやすい?※実際、ちょっと古めのかな漢字変換はサーバ型でした!(FreeWnn, Cannaなど)
最近の動向 〜インプットメソッド〜
● ちょっと前までは、IBusが主流でした!
…が、突然の仕様変更がIBus離れを加速…
● 移行先→Fcitx– 主に中国で開発 → 日本ではUbuntu がまず採用
– これに続いて VineLinux も新バージョンから Fcitx へ
が、新しいGNOME3がIBusしか受け付けない???
最近の動向 〜かな漢字変換システム〜
● ぶっちゃけ、 Mozc 一色!– 対抗: Redhat系(Fedora等)で libkkc を採用
● 結局のところベンダーに依存状態…orz– Mozc : Google が開発
– libkkc : (主に?) Redhat の方が開発
別にベンダー依存でも良くないか!? ・・・てとこに事件発生!
問題: Ibus-mozc が開発停止状態!?
Linuxな日本語入力の問題点
● ここまでの話をまとめます!– 新しい GNOME は Ibus しか受け付けない?
– Ibus-mozc の開発が停止してしまった!?
それってつまり…
→ 今後 GNOME では mozc が使えなくなる可能性があるかも!
● そもそも開発者がいない…?– Fcitxのメイン開発者は中国人の方
● 日本語特有の機能は入れにくい…かな?– かな漢字変換の方はベンダー依存状態
● 「綱渡り」と言えるかも…
今後のLinux日本語入力の課題
● GNOME問題
→ GNOME で mozc は諦めるべきかな?(ぇ libkkcを使えばいいのでは?
● 今後はキーボード入力とは限らない!– タッチパネル入力、音声入力にも対応していく必要性
● 現状のつくりでは難しいのでは?
– 新しい仕組み、 Wayland への移行も視野に● Maliit といった新しいOSSも活用していくべき(かも)
2. 最近の日本語入力技術ってどうなの?
今時のかな漢字変換
いろんな技術が出てきています…– Trie木 (辞書データ格納)
● ダブル配列 (Trieの実装)● LOUDS (Trieの実装)
– ビタビアルゴリズム (最短路検索)
どれも難解なものばかり(?)なので、今日は簡単なものを簡単に説明します!(ぇ
1. Trie木 (辞書データ格納法)
● 通常の木構造に対し、枝にラベルがついたもの– メリット:共通接頭検索が可能になる
0
12 3
4
5 6
7
8
か
み
た
すび
わ
た
し
これがいわゆるラベルラベルがついてるとTrieと呼ぶらしい
ラベルをたどることで辞書検索が可能になります→データ圧縮にもつながる
2. ダブル配列 (Trieの実装)
ちょっとむずかしいので省略。(こらっ!)
※形態素解析で有名な「mecab」で使われてます。
3. LOUDS (Trieの実装)
10 1110 10 110 10 0 0 0 10 0
0
12 3
4
5 6
7
8
か
み
た
すび
わ
た
し
仮想ノード「0」から
3つに分岐「1」は
分岐なし「2」から
2つに分岐「3」は
分岐なし「4」「5」「6」は末端ノード
「7」は分岐なし
「8」は末端ノード
Trieをビットで表現したものそれが「LOUDS」(らうず)です
課題として下記のようなものがあります・ノードを動的に追加することが困難・Trie構築後にビットを作成しないと厳しい?
4. ビタビアルゴリズム(最短路検索)
文頭
私
の 名前は
中野
※ここでは「コスト最小法」について説明します
です
文末ので す
中
綿 市 花 課
例: 「わたしのなまえはなかのです」を変換する場合 (コストの値はテキトーです^^;)
10
30 15
30 1510
15 40
20
50
● 単語生起コスト: 単語の出現優先度を表したコスト● 連接コスト: 単語と単語の結びつきやすさを表したコスト
→ 全て足して、合計値が最も低いルートが候補になります
15
30 4045
20
2020
20
50
20
25
3040
45
2020
出現頻度の高い単語は単語生起コストが低い
「名前」と「花」という単語は結びつきにくいので連接コストは高い
オープンソースライブラリも結構あります!
● Darts / Darts-clone– ダブル配列の実装。Mecabで採用。
● Tx / Ux– LOUDSの実装。Ux は Tx の進化版。
● Rx– LOUDSの実装。Mozcで採用。
● marisa-trie– LOUDSの実装。libkkcで採用。
まずはライブラリをいろいろ触ってみましょう!
最近の技術について参考文献
● 「自然言語処理の基礎」– 奥村学著 コロナ社
● 「日本語入力を支える技術」– 徳永拓之著 技術評論社
インターネットではこちらが参考になります
● 「アスペ日記」 takeda25 氏
簡潔データ構造 LOUDS の解説(全12回、練習問題付き)
http://d.hatena.ne.jp/takeda25/20120421/1335019644
3. まとめ。
紹介してきたとおり…
Linuxの日本語入力付近、課題多いっす!– あるものを使ってるだけでは、いつどうなるかわからない?
でも追ってみるといろいろ奥深くて楽しい!?– 新しい技術をいろいろ学べる!
● ビッグデータ● 機械学習● アルゴリズム
日本語探求プロジェクト「おーぷん万葉」とは
● 目的「オープンな日本語を手に入れよう!」– 現在: かな漢字変換ソフト「Izumo」を開発中。
● 現状の問題点:– ビックデータと叫ばれる時代に、開発がアクティブで
オープンコミュニティーな日本語入力システムがない???– インプットメソッド(UI側)も残念な状況orz
→ そんな現状を打破したい!てのが目的です。
本日ブース展示あります!
OSC京都で盛り上がった(かは不明)FreeWnnのリアルタイム変換ぽいものを展示しています。
興味を持っていただいた方は、ぜひブースにお立ち寄りください。
最後に一言。
日本語探求(ソフト開発)は総合格闘芸術だ!
ご清聴、ありがとうございましたm(_ _)m