Post on 08-Aug-2015
の読み方を考える
2015-05-22 PyData.Tokyo Meetup #5
佐藤敏紀 ( @overlast )
佐藤 敏紀 ( @overlast )現職 : LINE 株式会社のエンジニア
- 自然言語処理、検索、機械学習まわり
前職 : ヤフー株式会社のエンジニア
- 検索エンジンのキーワードのスペル訂正等
学生 : 東京工業大学大学院 奥村研究室
- 比較表現抽出の研究- blogWatcher の開発運用
その他
- DSIRNLP という勉強会を主催しています- 初心者にもやさしく雰囲気も良いです^^- YouTube で「DSIRNLP」を検索
- 夏に開催されるNLP若手の会 第10回シンポジウムに是非ご参加ください(まだ詳細未定)
http://yans.anlp.jp/
- 僕の現職や前職について何か聞きたい方は、お気軽にお声がけください
まとめ
mecab-ipadic-NEologdで絵文字に読みを付与するためのエントリを”試験的”に追加したという話
mecab-ipadicと併用すれば絵文字の読み・原型の文字列で検索が可能になりました
応用 => 言語処理・音声処理・コンテンツ監視等
今後アノテーションは徐々に改善していきます
Unicode 絵文字、使っていますか?
今回の議題はこちらの様な絵文字
解析の前に”とりあえず正規化”しよう
例: 「壁ドンされて〜〜〜☺」
↓ 「壁ドンされてー☺」
人間が眺めて意味が含まれていなさそうな文字列はどんどん変換・削除しましょう
やりかたの例はググると色々見つかります 例:「Regexp.ja」でググってください
絵文字を含んだ文の形態素解析
素のMeCabで「☺」を解析してみると
=> 「☺ 名詞,サ変接続,*,*,*,*,*」になる
人間が「☺」を見た時に
- 読み方は瞬間的に思い浮かばない- でも「笑ってるなw」くらいには即分かる
どうなって欲しい ??=>「☺ : 笑顔」位は自動的に付与して欲しい!!
そもそも絵文字の定義はどこにある??
UTR #51“Unicode Emoji”- Unicodeコンソーシアムが発行- 絵文字の実装指針文書
これのfull-emoji-list.html- 割と活発に更新される- Unicode 7.0 以前は変わらなないで欲しい
http://unicode.org/emoji/charts/index.html
http://unicode.org/emoji/charts/full-emoji-list.html
英語のアノテーションはごちゃっと付与されている
- 欲しいラベルは・・・- 各絵文字に複数の品詞情報が付与される可能性
- 品詞情報が変わると読みが変わる可能性
絵文字の品詞情報ってどうなるの?
ひと通りアノテーションすると6種類くらい、と分かります(今後、もう少し整頓します)
- 名詞,一般 「 (ビール)を飲んだ」- 名詞,サ変接続 「早速 (乾杯)した」- 記号,一般 「今日は打ち上げ。 」- 動詞 「今日は同僚の送別会で (飲ん?)だ」- 副詞 「星が✨(キラキラ)と輝いている」- 感動詞? 「 」「 」
最初ですしザクっとやってみました
=> Unicode 6.0 以前の絵文字全てに品詞・読み・原型を付与
絵文字アノテーションの難易度の印象
割と簡単
- 記号,一般 「今日は打ち上げ。 」
そこそこ何とかなる
- 名詞,一般 「 を飲んだ」- 名詞,サ変接続 「早速 した」
難しい (=> 以下の3種類は今回の対応の対象外とした)- 動詞? 「今日は同僚の送別会で だ」- 副詞 「星が✨と輝いている」- 感動詞 「 」「 」
mecab-ipadic-NEologdメカブ アイピーエーディック ネオログディー
mecab-ipadic-NEologdとは
- IPA 辞書を拡張した mecab のシステム辞書
- 新語・固有表現などを167万語以上再録- 読み仮名・原型付きで(異表記の重複込み)
- 最低月2回アップデート(初旬・中旬)- Apache License 2.0 なOSSなので安心
- 今後- 用言を充実する作業 / UniDic版の作成など
IPA 辞書を使っている際の「新語が辞書に登録されていなくて困る問題」を大幅に軽減できる
- その例をインストール時に確認できる
mecab-ipadic-NEologd を使うと
新語が「名詞,固有表現,一般,*,*,*」として認識されている
初回インストール (例: OSX)
Step.1 : 必要なライブラリをインストール
- $ brew install mecab mecab-ipadic git curl xz
Step.2 : git clone する
- $ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
Step.3 : インストールする
- $ cd mecab-ipadic-neologd; ./bin/install-mecab-ipadic-neologd -n
インストールが超簡単!!
https://www.flickr.com/photos/kit4na/6385016345/
使用例 : コマンドラインの場合[overlast@]$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologdiQONのアプリ内のデータ分析基盤の紹介や分析手法について紹介します。
iQON 名詞,固有名詞,一般,*,*,*,iQON,アイコン,アイコン
の 助詞,連体化,*,*,*,*,の,ノ,ノアプリ 名詞,固有名詞,一般,*,*,*,アプリ,アプリ,アプリ
内 名詞,接尾,一般,*,*,*,内,ナイ,ナイ
の 助詞,連体化,*,*,*,*,の,ノ,ノデータ 名詞,一般,*,*,*,*,データ,データ,データ
分析 名詞,サ変接続,*,*,*,*,分析,ブンセキ,ブンセキ
基盤 名詞,一般,*,*,*,*,基盤,キバン,キバン
の 助詞,連体化,*,*,*,*,の,ノ,ノ紹介 名詞,サ変接続,*,*,*,*,紹介,ショウカイ,ショーカイ
や 助詞,並立助詞,*,*,*,*,や,ヤ,ヤ分析 名詞,サ変接続,*,*,*,*,分析,ブンセキ,ブンセキ
手法 名詞,一般,*,*,*,*,手法,シュホウ,シュホー
について 助詞,格助詞,連語,*,*,*,について,ニツイテ,ニツイテ
紹介 名詞,サ変接続,*,*,*,*,紹介,ショウカイ,ショーカイ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。EOS
既存の IPA 辞書には登録されていない固有表現を認識できるようになった !!
うまくいかない場合の例一般名詞の固有表現化
- 「デート」が一般名詞だから、ドラマのタイトルに固有表現な品詞情報を付与できない
↑↑↑ 今後の固有表現抽出で解くべき問題の一つ
便利そうですね!!
事実とても便利
些細なエラーは忘れたい
可能になったことが大切
文書分類やレコメンドの
結果も当然改善される
https://www.flickr.com/photos/span112/2245983695/
たまにアップデートしましょう
以下のコマンドでサクっと更新できます
$ ./bin/install-mecab-ipadic-neologd -n
-h オプションで機能を確認してみましょう !!!
辞書のバージョンを固定したい場合
=> tag から任意のバージョンを選ぶ
- 機能が大幅に更新された時に作っている- 現在は v0.0.1 のみ存在している
今回は mecab-ipadic-neologd にUnicode 6.0 以前の絵文字エントリを追加
さっきのデータから生成して追加した
解析結果が素の MeCab と比べると、大分違うものになります(後者)
今後のアノテーションの改善方法
「 」おっはー(死語)がもとになっている
=> 止まれ、の代わりに使われたりするそうだ
日々の観察が重要!!
みんなの意見が最も少なくなる読み方になるように少しづつ調整していきます
まとめ
mecab-ipadic-NEologdで絵文字に読みを付与するためのエントリを”試験的”に追加したという話
mecab-ipadicと併用すれることで、絵文字の読み・原型の文字列で検索が可能になりました
応用 => 言語処理・音声処理・コンテンツ監視等
今後アノテーションは徐々に改善していきます
今後の Unicode 絵文字対応
Unicode 7.0 以降に対応
アノテーションをもう一回する(二周目)
用言的な絵文字の役割について考察する
品詞情報を自動推定できないか試みる
=> 使われ方がだんだん変わると思うので
Q. 最新情報の集め方は?
1. Twitter で @overlast をフォロー
2. たまに #neologd を検索する
3. neologd、形態素解析器、固有表現抽出などに対する関する不満を Twitter 上で言ってみる
参考資料
MeCab 用の新語辞書 mecab-ipadic-NEologd を公開しました- http://diary.overlasting.net/2015-03-13-1.html
日本語のREADME- https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md#
日本語で詳細な説明を書いたWiki- https://github.com/neologd/mecab-ipadic-neologd/wiki#
解析前に行うことが望ましい文字列の正規化処理- https://github.com/neologd/mecab-ipadic-neologd/wiki/Regexp.ja