SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
楽しいNLP4L
Luceneのための自然言語処理ツール
のご紹介
関口宏司@ロンウイット
@kojisays
* 個人の感想です。
*
1
NLP4Lとは?
Natural Language Processing for Lucene
ScalaベースのOSSプロジェクト
生テキストの代わりにLuceneインデックスのデータを使う
Luceneの強力なAnalyzerが使える
単語カウント、単語N-gramカウント、自由な基準による文書
ベクトルが容易に取得できる
独自MLツール+他MLツールとの連携機能
2
従来のNLPツールとの違い
NLPツール
コーパス(テキストデータ)
モデル等
ツールや目的に合わせて
都度正規化
NLP4L
Lucene
インデックス
Analyzer
コーパス(テキストデータ)
モデル、文書ベクトル等
Luceneの強力なAnalyzer
により自由に正規化
3
Luceneインデックスの基本
インデックスに登録するテキストデータを用
意
1. カツオはサザエの弟
2. サザエはワカメの姉
3. ワカメはカツオの妹
4
Luceneインデックスの基本
単語に分割して整理
カツオ:1, は:1, サザエ:1, の:1, 弟:1
サザエ:2, は:2, ワカメ:2, の:2, 姉:2
ワカメ:3, は:3, カツオ:3, の:3, 妹:3
5
Luceneインデックスの基本
転置インデックスのできあがり
の 1, 2, 3
は 1, 2, 3
カツオ 1, 3
サザエ 1, 2
ワカメ 2, 3
弟 1
姉 2
妹 3
6
NLP4Lによる
Luceneインデックスの利用
の 1, 2, 3
は 1, 2, 3
カツオ 1, 3
サザエ 1, 2
ワカメ 2, 3
弟 1
姉 2
妹 3
Lucene/NLP4Lの関数
termFreq
totalTermFreq
docFreq
:
正規化済みの
性質のよい単語
7
アーキテクチャー
Apache Lucene API
Scala Driver for Lucene
(Analyzer, Word-counter, FST dictionary etc.)
Scala High Level API (for convenience in text mining, stats etc.)
Index Schema
Browser
(GUI/CUI)
File based
Mahout/Spark
connector
Lucene Index
Model
RDD for Spark
Index
Interactive
Shell for NLP4L
(REPL)
*2015年5月現在、提供されていない機能も含みます。
8
活用例
Lucene/Solr向け類義語辞書の自動生成
企業が保有するデータと公開データの名寄せ
トピックモデルを使ったレコメンド
9
開発メンバー
Tomoko Uchida
Pure Python FST & Morphological Analyzer developer
Koji Sekiguchi
Apache Lucene/Solr Committer & PMC member
Tommaso Teofili
Apache Lucene/Solr, UIMA, OpenNLP, Hama, etc.
Committer
10
楽しい その1
日本語チュートリアルがついていてすぐ試せ
るから楽しい!
http://nlp4l.github.io/tutorial_ja.html
ビルドからサンプルコーパスダウンロード、
インデクシングまでわずか1分
$ git clone https://github.com/NLP4L/nlp4l.git // NLP4Lの取得
$ cd nlp4l
$ sbt pack // ビルド
$ ./target/pack/bin/nlp4l // REPLの起動
nlp4l> downloadLdcc // サンプルコーパスのダウンロード
nlp4l> :load examples/index_ldcc.scala // Luceneインデックスの作成
11
楽しい その2
REPLからLuceneインデックスブラウザが動
くから楽しい!
nlp4l> :? // ヘルプの表示
nlp4l> open(“/tmp/index-ldcc”) // Luceneインデックスのオープン
nlp4l> status // Luceneインデックスの状態表示
nlp4l> browseTerms(“title”) // titleフィールドの単語一覧を取得する宣言
nlp4l> nt // 「次」の単語一覧の表示
nlp4l> nextTerms(500) // 500単語スキップして表示
nlp4l> topTerms(100) // titleフィールドのトップ100単語の表示
12
楽しい その3
LuceneのいろいろなAnalyzerがREPLから使
えるので楽しい!
# StandardAnalyzer を取得
nlp4l> val analyzer1 = Analyzer(new org.apache.lucene.analysis.standard.StandardAnalyzer)
# StandardAnalyzer で英文を解析
nlp4l> analyzer1.tokens(“Lucene is a popular software.”)
# JapaneseAnalyzer を取得
nlp4l> val analyzer2 = Analyzer(new org.apache.lucene.analysis.ja.JapaneseAnalyzer)
# JapaneseAnalyzer で日本語文を解析
nlp4l> analyzer2.tokens(“旅にこだわりたい若者から人気”)
13
楽しい その4
Luceneの処理結果をScalaで加工できるので
楽しい!
# 名詞のみterm要素を表示
nlp4l> analyzer2.tokens(“旅にこだわりたい若者から人気").
filter(_.getOrElse("partOfSpeech",null).startsWith("名詞")).map(_.getOrElse("term",null))
# 簡単ファセット(カテゴリごとの文書数をカウント)
nlp4l> val searcher = ISearcher(“/tmp/index-ldcc”)
nlp4l> searcher.search(rows=10000).map(_.getValue("cat").get(0)).
foldLeft(scala.collection.mutable.Map.empty[String, Int]){(m,c) => m += (c -> (m.getOrElse(c,
0)+1))}.foreach(println(_))
14
楽しい その5
ShingleFilterが意外に活躍するところを目の当た
りにして楽しい!
応用例
言語モデル
隠れマルコフモデル
連語分析モデル
15
ShingleFilterとは?
単語Nグラムフィルター
WhitespaceTokenizer
ShingleFilter (N=2)
“Lucene is a popular software”
Lucene/is/a/popular/software
Lucene is/is a/a popular/
popular software
16
言語モデル
言語の流暢さを表す
Nグラムモデル=最も広範に使われる言語モ
デル
2グラムモデルの計算例
17
Luceneインデックスと言語モデル
ShingleFilterを使ったフィールドがあれば、
Luceneインデックスから言語モデルが計算可
能
*NLP4LではTermDocs.totalTermFreq()で単語出現数を得られます。
ShingleFilter(N=2)のフィールドで
”an apple”の出現数をカウント
通常のフィールドで
”an”の出現数をカウント
18
ShingleFilterを使ったサンプル
隠れマルコフモデル
hmm_postagger.scala
trans_katakana_alpha.scala
連語分析モデル
colloc_analysis_[brown|ldcc].scala
Brownコーパスを学習して
品詞タグを付加するサンプル
カタカナ語・英単語対応データを
学習してカタカナ語から英単語を
推定するサンプル
アルク社「英辞郎 on the WEB Pro」の
「頻度集計」ライクな出力をするサンプル
19
アルク社:英辞郎 on the WEB Pro
20
CollocationalAnalysisModel
連語分析のためのデータモデル
アルク社「英辞郎 on the WEB Pro」の頻度集
計と同じことができる
ShingleFilter + BothEndsFilter(自作)
21

Más contenido relacionado

Destacado

Images of jesus powerpoint
Images of jesus powerpointImages of jesus powerpoint
Images of jesus powerpoint
kylie-joharvey
 

Destacado (20)

【土曜会】廃墟アートとは何か:じょいとも
【土曜会】廃墟アートとは何か:じょいとも【土曜会】廃墟アートとは何か:じょいとも
【土曜会】廃墟アートとは何か:じょいとも
 
The Last Judgment
The Last JudgmentThe Last Judgment
The Last Judgment
 
Visual Representation & Learning
Visual Representation & LearningVisual Representation & Learning
Visual Representation & Learning
 
The Life of Christ
The Life of ChristThe Life of Christ
The Life of Christ
 
【土曜会】キッチュの美学:藍白操
【土曜会】キッチュの美学:藍白操【土曜会】キッチュの美学:藍白操
【土曜会】キッチュの美学:藍白操
 
Approaching Join Index: Presented by Mikhail Khludnev, Grid Dynamics
Approaching Join Index: Presented by Mikhail Khludnev, Grid DynamicsApproaching Join Index: Presented by Mikhail Khludnev, Grid Dynamics
Approaching Join Index: Presented by Mikhail Khludnev, Grid Dynamics
 
Faceting with Lucene Block Join Query: Presented by Oleg Savrasov, Grid Dynamics
Faceting with Lucene Block Join Query: Presented by Oleg Savrasov, Grid DynamicsFaceting with Lucene Block Join Query: Presented by Oleg Savrasov, Grid Dynamics
Faceting with Lucene Block Join Query: Presented by Oleg Savrasov, Grid Dynamics
 
じょいとも広告人講座13: 片岡敏郎
じょいとも広告人講座13: 片岡敏郎じょいとも広告人講座13: 片岡敏郎
じょいとも広告人講座13: 片岡敏郎
 
Images of jesus powerpoint
Images of jesus powerpointImages of jesus powerpoint
Images of jesus powerpoint
 
School of athens
School of athensSchool of athens
School of athens
 
SolrのAtomicUpdateを50000倍速くした話
SolrのAtomicUpdateを50000倍速くした話SolrのAtomicUpdateを50000倍速くした話
SolrのAtomicUpdateを50000倍速くした話
 
DocValues aka. Column Stride Fields in Lucene 4.0 - By Willnauer Simon
DocValues aka. Column Stride Fields in Lucene 4.0 - By Willnauer SimonDocValues aka. Column Stride Fields in Lucene 4.0 - By Willnauer Simon
DocValues aka. Column Stride Fields in Lucene 4.0 - By Willnauer Simon
 
solr勉強会資料
solr勉強会資料solr勉強会資料
solr勉強会資料
 
School of Athens
School of AthensSchool of Athens
School of Athens
 
Hukum pembiayaan makalah leasing
Hukum pembiayaan makalah leasingHukum pembiayaan makalah leasing
Hukum pembiayaan makalah leasing
 
第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめ
 
Scaling search with SolrCloud
Scaling search with SolrCloudScaling search with SolrCloud
Scaling search with SolrCloud
 
Elasticsearch+nodejs+dynamodbで作る全社システム基盤
Elasticsearch+nodejs+dynamodbで作る全社システム基盤Elasticsearch+nodejs+dynamodbで作る全社システム基盤
Elasticsearch+nodejs+dynamodbで作る全社システム基盤
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
 

Más de Koji Sekiguchi

情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで
Koji Sekiguchi
 
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizerLUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
Koji Sekiguchi
 
情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介
Koji Sekiguchi
 
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
Koji Sekiguchi
 
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョンLuceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Koji Sekiguchi
 
Lucene terms extraction
Lucene terms extractionLucene terms extraction
Lucene terms extraction
Koji Sekiguchi
 
Visualize terms network in Lucene index
Visualize terms network in Lucene indexVisualize terms network in Lucene index
Visualize terms network in Lucene index
Koji Sekiguchi
 
WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成
Koji Sekiguchi
 
OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and Perceptron
Koji Sekiguchi
 
自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門
Koji Sekiguchi
 

Más de Koji Sekiguchi (20)

20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
 
Solr から使う OpenNLP の日本語固有表現抽出
Solr から使う OpenNLP の日本語固有表現抽出Solr から使う OpenNLP の日本語固有表現抽出
Solr から使う OpenNLP の日本語固有表現抽出
 
Learning-to-Rank meetup Vol. 1
Learning-to-Rank meetup Vol. 1Learning-to-Rank meetup Vol. 1
Learning-to-Rank meetup Vol. 1
 
Lucene 6819-good-bye-index-time-boost
Lucene 6819-good-bye-index-time-boostLucene 6819-good-bye-index-time-boost
Lucene 6819-good-bye-index-time-boost
 
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
An Introduction to NLP4L (Scala by the Bay / Big Data Scala 2015)
 
An Introduction to NLP4L
An Introduction to NLP4LAn Introduction to NLP4L
An Introduction to NLP4L
 
コーパス学習による Apache Solr の徹底活用
コーパス学習による Apache Solr の徹底活用コーパス学習による Apache Solr の徹底活用
コーパス学習による Apache Solr の徹底活用
 
情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで情報検索の基礎からデータの徹底活用まで
情報検索の基礎からデータの徹底活用まで
 
LUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizerLUCENE-5252 NGramSynonymTokenizer
LUCENE-5252 NGramSynonymTokenizer
 
情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介情報検索におけるランキング計算の紹介
情報検索におけるランキング計算の紹介
 
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
 
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョンLuceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
 
Html noise reduction
Html noise reductionHtml noise reduction
Html noise reduction
 
Lucene terms extraction
Lucene terms extractionLucene terms extraction
Lucene terms extraction
 
Visualize terms network in Lucene index
Visualize terms network in Lucene indexVisualize terms network in Lucene index
Visualize terms network in Lucene index
 
WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成WikipediaからのSolr用類義語辞書の自動生成
WikipediaからのSolr用類義語辞書の自動生成
 
HMM viterbi
HMM viterbiHMM viterbi
HMM viterbi
 
NLP x Lucene/Solr
NLP x Lucene/SolrNLP x Lucene/Solr
NLP x Lucene/Solr
 
OpenNLP - MEM and Perceptron
OpenNLP - MEM and PerceptronOpenNLP - MEM and Perceptron
OpenNLP - MEM and Perceptron
 
自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門自然言語処理における機械学習による曖昧性解消入門
自然言語処理における機械学習による曖昧性解消入門
 

Último

Último (12)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

Nlp4 l intro-20150513