SlideShare a Scribd company logo
Perl で自然言語処理佐藤 敏紀(さとうとしのり)@overlast1
私(佐藤敏紀)の自己紹介名前:佐藤敏紀(さとうとしのり)ID       : overlast(Twitter : @overlast)key     : 自然言語処理/機械学習/検索/圧縮/順序学習blog   : Overlasting::Life(http://diary.overlasting.net/) 略歴2005年4月〜2008年3月:東工大の奥村研究室自然言語処理(比較関係抽出)の研究2008年5月〜:某大手ポータルサイト自然言語処理・機械学習技術をWeb文書に応用類似文字列検索ライブラリの研究・開発スペル訂正システムの研究・開発2
アジェンダ自然言語処理って何?何をやったら自然言語処理なの?自然言語処理の勉強のはじめ方Webサービスと自然言語処理上手な自然言語処理との付き合い方改善ポイント発見のためのキーワード3
自然言語処理って何?4
自然言語処理(NLP : Natural Language Processing)とは= 「自然言語」をコンピュータで「処理」すること自然言語(Natural Language)人間が意思疎通のために使っている言葉言葉による意思疎通の手法例:読み・書き・話しコンピュータ用の人工言語と区別される自然言語処理分野 : 人工知能 + 言語学内容 = 解析をする際にどのように高い性能を達成するか計算言語学(Computational Linguistics)と関連NLPと聞いて神経的なモノを浮かべては駄目5
自然言語処理技術の応用例Google 日本語入力 - CGI API6
自然言語処理技術者に必須な要素扱うデータに含まれる言語に関する知識言語に関する文法、用語テキストデータ中の単語の分布、文の構造など必要な処理を実現できるプログラミングスキル実現したいことによって、必要なスキルが異なるできれば確率・統計に関連する知識何をやる場合でも、ほぼ必ず必要になる7
自然言語処理に関連する知識・技術自然言語処理を実現するための知識データ構造とアルゴリズム、機械学習、代数学、離散数学、グラフ理論、確率統計、情報理論、データ圧縮、組み合わせ最適化など自然言語処理の基盤技術形態素解析、構文解析、意味解析、文脈解析など自然言語処理技術を応用して実現できる技術情報検索、固有表現抽出、テキストマイニング、情報抽出、かな漢字変換、機械翻訳、文書分類、OCR、スペルチェック、音声認識、自動要約など8このあたりが自然言語処理と呼ばれる
自然言語処理の勉強のはじめ方- これから勉強する人向け -9
日本語の教科書などを読む自然言語処理の基礎(奥村学著)薄いので読みやすい自然言語処理(長尾真 著)多少(かなり?)古いが網羅的基礎日本語文法(増岡・田窪著)日本語の自然言語処理に必要な用語を知る言語処理のための機械学習入門自然言語処理を学びつつ機械学習にも入門できる生駒日記:NAISTの小町守さんのブログNLP関連の良質な記事をピックアップして下さる毎日読んでいれば理解が深まる(半年ROM)海外インターンに行きたくなる(副作用)10
英語の教科書などを読む最初の参考書Foundations of Statistical Natural Language Processing多少古いが、未読なら通読する価値がある様々な自然言語処理の研究室で読まれている略称 : FSNLP学会・研究会自然言語処理の学会PFIの岡野原さんによる学会の解説Link of NLP/CL Conference東京大学喜連川研特認助教の吉永直樹さんのリスト。便利。ACL Anthology情報処理学会電子図書館(有料)ACM Digital Library(有料)11
勉強会・研究会・学会に参加する勉強会・コミュニティ自然言語処理勉強会@東京@nokunoさんが主催。参加時の心理的ハードルが低い。NLP若手の会研究会や勉強会を頻繁に開催している。研究会情報処理学会の自然言語処理研究会定期開催しているので割と気軽に参加できる。学会の全国大会言語処理学会の年次大会 => お祭。参加すべき。12
その他のおすすめ資料集合知プログラミング自然言語処理の応用を体験できるPythonのコードを見ながらPerlで書く大規模サービス技術入門(伊藤・田中著)通読すると何かをやった気分になれる入門自然言語処理Natural Language Processing with Pythonの邦訳オライリーさん。12章が日本語で書き下ろし情報検索と言語処理-言語と計算-徳永(徳永著)おすすめ。Amazonで本書の関連書籍を見ると良い。「たつをのChangeLog」のサンプルコードPerl でWebAPIから得た結果を加工するサンプル13
自然言語処理に必要な3つの心構え最初は簡単に実装し、徐々に洗練する簡単で効果が高いところから解決しよう機械はミスをする多少の間違えは諦めよう。70%正解してれば十分データは自前で集めて、自前で管理する他社のAPIや外注に依存しきるのは危険14
簡単な方法からやって、洗練する最初に『かなり効果が高い & 割と簡単に導入できる』 技術に絞って開発し、サービスに導入する。導入後にユーザの動きが変わるので、ログを分析し、次に効果が高い技術を考える15
機械はミスをする人間は優秀。機械では真似しきれない。例:以下の文から、日本語の誤り箇所を探せちょっと、そのケーブルで貸して下さい一度は紙と鉛筆を用意して問題を解こうどの位の精度が期待できるかを試そう。例:リンゴを分類して、分類精度を得てみようリンゴとみかんを分類簡単すぎ甘い赤リンゴと甘くない赤リンゴを分類難しすぎる(世の中には、この分類をする仕事がある)16
日本語の口語文テキストは難しい難しい自然言語処理には間違えがつきもの。多くの自然言語処理技術がもっている仮定形態素解析器などによる分かち書き処理は100%うまくいく  実際には、100%うまくいくわけではない多くの形態素解析器は新聞のような文書向けに調整済みブログやTwitterの文書は新聞テキストより解析が難しいそのため、形態素解析以降の処理にエラーが出てくる多少の間違えは許容しよう。気にしないこと17
データは自前で集め、自前で持つデータを自分で収集しなかった場合他人がデータに何か処理を行なっていた場合に困ることがあるデーやを自前で持っていなかった場合ある日、他社が提供するAPIが止まるとサービスが続行できなくなるデータをネットワーク越しに利用している場合頻繁なデータ転送に時間を食ってしまうデータが超巨大な場合は解決できないので諦めて良い理想:言語処理用データは計算機のローカルディスクに置く自然言語処理をすると必ず意外に長い処理時間がかかる。自然言語処理はアプリケーションのメイン処理ではないソートとか正規化とか、事前にできることは全て事前にやっておく18
Webサービスと自然言語処理いざ実践!!19
自然言語処理は最初は意外と簡単自然言語処理はWebサービスを盛り上げるスパイス、と考えてみよう塩やコショウのようなもの。何かを始められるかどうかの目安自分の計算機上で形態素解析器を動かして、何かの文書における単語の出現頻度をカウントできる技術を使いこなすことや、オリジナル手法を考えようとすると、難易度が飛躍的に上がる最初は Web API やライブラリを利用すればOK試作は Perl でサクッと作ればOK20
課題を見つけてチャレンジするデータの獲得手法自社・他社が提供するAPIを使用他社からデータを購入・提供自社で独自にデータ収集データ処理の手法自社・他社が提供するAPIを使用コンピュータを用意。ライブラリをインストール・使用自分でライブラリを開発21
Webサービスにありがちな悩みサイト内のユーザ回遊性を高めたいデータはある。だけど、検索できない単語Aと単語Bって一緒にならないの?ユーザが全アイテムを見てくれないソートの順序が気にいらないデータにカテゴリ的なものを付けたい-> これらの問題は導入が簡単で効果も高い22
0/723
Web API を使って問題解決もう皆さん飽きてますよね。他の方が沢山プレゼンをしてるはずなのでググってください。個人的には、他者が提供しているAPIへの依存を減らした方が良いと思います。24
1/725
サイト内のユーザ回遊性を高めたい-> 『レコメンド』あるユーザの興味をひきそうな「アイテム」や「ユーザ」を推薦アイテムの例:商品、Webページ、芸能人など2つの手法があるコンテンツベース「アイテム」が持つ情報から類似する「アイテム」を探す協調フィルタリング「情報」と「ユーザの行動」の関係から類似度を計算ユーザを推薦アイテム空間に基づき高類似度のユーザを抽出アイテムを推薦ユーザ空間に基づき高類似度のアイテムを抽出26
例:Twitterのお気に入りレコメンド(1/2)- 協調フィルタリングでアイテム空間に基づきユーザを推薦 -ユーザ 1 : 発言 A、発言 B、発言 C …ユーザ 2 : 発言A、発言 D、発言 G …   ユーザ 3 : 発言 E、発言 F、発言G … ユーザ 4 : 発言 B、発言 G、発言I … ユーザ 5 : 発言 C、発言 G、発言I … ユーザ 5 : 発言 O、発言 R、発言 Z … 27
例:Twitterのお気に入りレコメンド(2/2)- 協調フィルタリングでアイテム空間に基づきユーザを推薦 -あなた : 発言 B、発言 C、発言 G …ユーザ 1 : 発言A、発言 B、発言 C …    ユーザ 4 : 発言 B、発言 G、発言 I …ユーザ 4 : 発言 C、発言 G、発言 I …28ユーザ 1 : 発言 A、発言 B、発言 C …
ユーザ 2 : 発言 A、発言 D、発言 G …
ユーザ 3 : 発言 E、発言 F、発言 G …
ユーザ 4 : 発言 B、発言 G、発言 I …
ユーザ 5 : 発言 C、発言 G、発言 I …
ユーザ 6 : 発言 O、発言 R、発言 Z …お気に入りが  共通しているユーザを抽出
例:はてなブックマークの関連エントリー29
CPANモジュールの例Algorithm::NaiveBayes30実行結果--- 'ユーザ1 : 0.935928608918598'--- 'ユーザ3 : 0.263229921258356'--- 'ユーザ2 : 0.233982152229649'
2/731
データはある。だけど検索できない。=>  まよわず「検索機能をつける」迷わず「検索」機能をつけようもし「全文検索を実現する技術者がいない」ならSitemapをGoogleに登録しよう。それ以外自前で検索ライブラリを導入する。 or 外注する。もし「検索機能の設置で損なわれる価値がない」なら即リリースしよう。個人が特定されて困る種類の情報もあるクレームが来そうなら、検索できない方が良いかも例:Twitterの発言に性別を推定したタグを付けたデータ32
3/733
単語Aと単語Bって一緒にならないの?=> 「正規化・データクレンジング・名寄せ」では「正規化・データクレンジング・名寄せ」が必要な例全角半角とかグチャグチャ送り仮名の振り方がバラバラ一部の記号が邪魔複数のフォーマットが混在している旧漢字と新漢字が混ざってる文字コードがサービスごとにちがうユーザが商品名に余計な文字や記号を付ける。活用がちょっと違う動詞をまとめたい要するに、どういう場合に困るの? (発音がほぼ同じ && 意味がほぼ同じ)だが、文字の表層が違う34
例:電話番号っぽい数字例:電話番号「0120345678」と「0120(34)5678」は同じ番号?そもそも、電話番号として使える?CPANモジュール「Number::Phone::JP」を使う事前に記号をヒントに番号を切り分けたり、番号を桁数をヒントに切り分けたりする判定の結果vaildなだったら0120-34-5678に束ねる=> 戦略:『信用して大丈夫かをチェックして、代表表記を決めて、代表表記に紐づける』ことを自動化する人手は最強だが、均質な作業を高速には行なえない35
表記を揃える手順の例データを調査する処理するデータに特有な傾向をつかむ特有のフォーマット、や、同じ意味の異なる表記英数字や記号や全角半角文字を揃える半角または全角にそろえる不要な文字を消す代表となる表記を決めるデータに特有な同じ意味を表す表現を代表表記に揃える例:住所 => 「1-2-3」と「1丁目2番地3号」代表表記との文字列類似度が自分で決めた閾値以上ならまとめる再び人間がデータを調査。処理全体を洗練する。36
4/737
サイト内のユーザ回遊性を高めたい-> 『アンカーテキスト化』手法あらかじめ辞書にキーワードを登録テキストに辞書中のキーワードが含まれていたらアンカーテキスト化する例:はてなのキーワードリンク38
CPANモジュールの例Text::Darts39--- 今日は<a href="http://www.google.co.jp/search?ie=UTF-8&q=YAPC">YAPC</a> に<a href="http://www.google.co.jp/search?ie=UTF-8&q=NLP">NLP</a> のことを話に来たが、<a href="http://www.google.co.jp/search?ie=UTF-8&q=大丈夫">大丈夫</a> か。
5/740
ユーザが全アイテムを見てくれない=> 『ランダム表示』してログを観察たとえば?ソート結果のランク外の候補をランダムで混ぜるしばらく運用してクリックスルーログをためるより多くクリックされる候補をソート結果に混ぜるどういうとこで使われてるの?「検索エンジンの検索結果」や「広告」の精度向上具体的な手法の例「N本腕バンディット問題」というキーワードから41
6/742
出力結果の順番が気に入らない-> 『ソート方法』を変えてはどうかユーザに示すアイテムをソートする順序利便性に直結するどうやるのか日付や値段など、「とある属性の昇順降順」頻度人気度、回数確率例:お気に入り数 / ページビュー数機械学習技術で並び順を学習43
例:ショッピングサイトの検索楽天市場Amazon44
例:クックパッドのプレミアムサービス(月294円)45
例:食べログのiPhone版46プレミアム会員(月315円)になると、「人気順」ソートを使える。
PC版:今のところ無料
有料化時に話題になった
食べログがユーザの評価に関係なくログを集計して算出した注目順の方を有料化すべきだった?CPANモジュールの例Algorithm::SVMLightSVMlightのRanking SVMsを手軽に使える CPANモジュールを使わないなら他のライブラリもあるRanking SVMs事前の学習:複数の事例セットを用意し、素性(そせい)抽出後に学習入力    :ランキングしたい複数の候補出力    :ランキングした入力インストール方法JPerl Advent Calenderで紹介した「Algorithm::SVMLight をインストールして使ってみよう」47
Algorithm::SVMLightのRanking SVMsのサンプルデータ学習データ順位事例セットのID素性1:スコア素性2:スコア….テストデータ未知の事例セットのID48
7/749
データにカテゴリ的なものを付けたい=>「分類」か「クラスタリング」分類事前に各データにカテゴリ付けしたデータ集合を用意用意したデータを教師データとして分類器を学習=> 分類器で、未知のデータを分類しカテゴリ名をつける クラスタリングデータを近いものから結合してデータの塊をつくっていく事前に指定した数、ルールから導かれる結合を達成した時点で計算終了=> 出来上がった塊に、なんとかしてカテゴリをつける。 辞書マッチカテゴリ辞書を作っておいて、マッチしたらカテゴリをつける。50
文書分類の概要の例欲しいカテゴリごとに分類された文書集合を用意機械学習器に学習させる新しい文書を学習させた機械学習器で判定する51中華和食洋食カレーモデルファイル和食洋食素性(そせい)抽出して学習させる学習した中華カレー疲れた:1中華:1暑い:1食欲:1昨日の自分のTwitterカレー?素性抽出判定させる
文書クラスタリング概要の例事前に文書集合を何個に分けるか考えておく抽出した素性(そせい)が近い文書をまとめるまとめる時に一番寄与した特徴でラベル付け52文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書文書Perl                                Ruby                              PHP                               C++            Python
どんなときに嬉しい?例1:キーワード検索で見つからないデータAmazonで「アルゴリズム」に関する新刊が欲しいカテゴリ選択で候補数を減らす。上位のものから探す53

More Related Content

PDF
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
PDF
Japan.r ver1.2 20171202_ota
PPTX
Python による 「スクレイピング & 自然言語処理」入門
PDF
Slide software jpn_20180202_ota
PDF
Pycon jp2017 20170908_ota
PDF
Chainerのテスト環境とDockerでのCUDAの利用
PDF
Jubatusの紹介@第6回さくさくテキストマイニング
PDF
Lighting talk chainer hands on
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
Japan.r ver1.2 20171202_ota
Python による 「スクレイピング & 自然言語処理」入門
Slide software jpn_20180202_ota
Pycon jp2017 20170908_ota
Chainerのテスト環境とDockerでのCUDAの利用
Jubatusの紹介@第6回さくさくテキストマイニング
Lighting talk chainer hands on

What's hot (18)

PDF
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
PDF
ゼロから始める自然言語処理 【FIT2016チュートリアル】
PDF
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
PDF
子供の言語獲得と機械の言語獲得
PDF
言語資源と付き合う
PDF
ピーFIの研究開発現場
PDF
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
PDF
研究・企業・生き方について 情報科学若手の会2011
PDF
Tensor flow勉強会 (ayashiminagaranotensorflow)
PDF
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
PDF
ICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
PDF
大規模データ時代に求められる自然言語処理
PDF
深層学習フレームワークChainerの特徴
PPT
Lt python腕試しネタ
PDF
Rでダイエット
PDF
Jenkins によるレポートスクリプト管理
PDF
【FIT2016チュートリアル】ここから始める情報処理 ~音声編~ by 東工大・篠崎先生
PDF
内省するTensorFlow
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
ゼロから始める自然言語処理 【FIT2016チュートリアル】
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
子供の言語獲得と機械の言語獲得
言語資源と付き合う
ピーFIの研究開発現場
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
研究・企業・生き方について 情報科学若手の会2011
Tensor flow勉強会 (ayashiminagaranotensorflow)
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
ICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
大規模データ時代に求められる自然言語処理
深層学習フレームワークChainerの特徴
Lt python腕試しネタ
Rでダイエット
Jenkins によるレポートスクリプト管理
【FIT2016チュートリアル】ここから始める情報処理 ~音声編~ by 東工大・篠崎先生
内省するTensorFlow
Ad

Viewers also liked (20)

PDF
Keeping TABS Q2. 2011 (trends+anthropology+behaviour+strategy)
PDF
『伝達したい情報を構造化し表現する技術』教育の実践
PDF
Topical keyphrase extraction from twitter
PDF
Joint inference of named entity recognition and normalization for tweets
PPT
はてなブックマークのシステムについて
PPTX
業務効率化のためのエクセルのアイデア 20151112
PDF
婚活メソッド
PPTX
2015年10月度スパイス・パークのアップデート計画
PDF
貯金エクササイズ
PDF
貯金エクササイズその後
PDF
仕様記述言語の中の関数
PDF
お金持ちはなぜタワーマンションに住むの?そのリスクは?
PDF
[20120410] @marqsの転職を祝うLT
PPTX
20140607 限界はどこにある?
PPT
シンプル資産運用法
DOC
日本を捨てた富裕層たち
PDF
家計簿習慣化支援サービス ~エロい家計簿~
PDF
0423mitsubishi
PDF
物欲家計簿プレゼン
KEY
だいたいデジタルのライフログ
Keeping TABS Q2. 2011 (trends+anthropology+behaviour+strategy)
『伝達したい情報を構造化し表現する技術』教育の実践
Topical keyphrase extraction from twitter
Joint inference of named entity recognition and normalization for tweets
はてなブックマークのシステムについて
業務効率化のためのエクセルのアイデア 20151112
婚活メソッド
2015年10月度スパイス・パークのアップデート計画
貯金エクササイズ
貯金エクササイズその後
仕様記述言語の中の関数
お金持ちはなぜタワーマンションに住むの?そのリスクは?
[20120410] @marqsの転職を祝うLT
20140607 限界はどこにある?
シンプル資産運用法
日本を捨てた富裕層たち
家計簿習慣化支援サービス ~エロい家計簿~
0423mitsubishi
物欲家計簿プレゼン
だいたいデジタルのライフログ
Ad

Similar to Perl で自然言語処理 (20)

PDF
言語処理するのに Python でいいの? #PyDataTokyo
PPT
おとなのテキストマイニング
PDF
音声認識超比較、各社コグニティブサービス全部入り
PDF
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
PDF
YAPC::Asia2015
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
PDF
Twitterにおける即時話題推定技術「どたばたかいぎ」の開発
PPTX
Wacode5thでのpython講義資料
PDF
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
PDF
はじめてのテスト技法
PDF
Pythonで自然言語処理
PPTX
R勉強会20140421.upload
PDF
Goをえらんだ理由
PDF
Jubatusにおける機械学習のテスト@MLCT
ODP
気の合う人達と社外で社内勉強会
PDF
mypy - 待望のPython3.9型ヒント対応
PDF
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
PPTX
Alteryx UG3 LT #alteryx_ug
PDF
さくさくテキストマイニング入門セッション
PPTX
Tokyo r30 beginner
言語処理するのに Python でいいの? #PyDataTokyo
おとなのテキストマイニング
音声認識超比較、各社コグニティブサービス全部入り
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
YAPC::Asia2015
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
Twitterにおける即時話題推定技術「どたばたかいぎ」の開発
Wacode5thでのpython講義資料
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
はじめてのテスト技法
Pythonで自然言語処理
R勉強会20140421.upload
Goをえらんだ理由
Jubatusにおける機械学習のテスト@MLCT
気の合う人達と社外で社内勉強会
mypy - 待望のPython3.9型ヒント対応
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
Alteryx UG3 LT #alteryx_ug
さくさくテキストマイニング入門セッション
Tokyo r30 beginner

Perl で自然言語処理