こんにちは、買物情報事業部の荒引 (@a_bicky) です。 前回、「検索結果の疑問を解消するための検索の基礎」で単語単位でインデキシングする前提で説明しましたが、今回は文などを単語単位で分割するために使う技術である形態素解析について触れます。 形態素解析器には色々ありますが、中でもメジャーと思われる MeCab の仕組みについて説明します。 MeCab の解析精度を上げるために辞書に単語を追加したことのある方もいると思いますが、動作原理を理解することで単語を追加する際に適切な生起コストを設定できるようになったり、学習の際に適切なパラメータを設定できるようになったりするはずです。 なお、MeCab は汎用テキスト変換ツールとしても使用できます が、簡単のため MeCab + IPA 辞書のデフォルト設定前提で説明します。 アジェンダ 形態素解析とは MeCab における最適な解析結果の推
概要 偶然57577になっている文章を短歌としてつぶやく Twitter の bot を作りました。 フクロウが鳴くと明日は晴れるので洗濯物を干せという意味 #tanka ウィキペディア日本語版「フクロウ」より http://t.co/Dm1uHcQdzR— 偶然短歌bot (@g57577) 2014, 12月 31 再帰的アルゴリズムが有効な問題として有名であり #tanka ウィキペディア日本語版「ハノイの塔」より http://t.co/vm2ZqwImKi— 偶然短歌bot (@g57577) 2014, 12月 31 文章はウィキペディア日本語版を対象としました。 作り方 jawiki-latest-pages-articles.xml.bz2 をダウンロード。 WP2TXT で上記を扱いやすい形式に変換。 このスクリプト で57577になっている文を抽出。数時間かけて(遅い)
概要 本稿はRakutenMAというJavaScriptだけで動く学習器付きの形態素解析器を利用する入門記事です。本記事を読了すると、形態素解析の実行と形態素解析のモデルを作成・更新出来るようになります。 また、本稿ははてな×PC工房との連動企画の補足をするべく書きました。 「あんちべさんと一緒に Rakuten MA で形態素解析」はてなニュース連動企画 第二弾! : パソコン工房 パソコン工房のPCで遊ぼう第2弾! あんちべさんと一緒に Rakuten MA で形態素解析 - はてなニュース RakutenMAを利用したエディタ判定器デモ エディタ判定器 :パソコン工房 【やじうまWatch】Emacs派とVim派の対立を煽る「エディタ判定器」が面白いと評判 -INTERNET Watch はじめに 近年、twitterやFacebookなどのSNSやAmazonのレビューなどから得ら
テキストから意味を読み取るというのは非常に難しく、そのための専用ソフトウェアが存在するほどです。そしてテキスト解析手法の一つとして知られているのが分かち書きです。日本語であればChasenがよく知られています。 kuromoji.jsはそんな分かち書き処理をJavaScriptで行ってしまおうというソフトウェアになります。KuromojiというApache財団のオープンソース分かち書きエンジンをJavaScriptにポーティングしています。 kuromoji.jsの使い方 こちらはデモです。Webブラウザベースで動作しています。nodeでも使えます。 適当な文章をリアルタイムに分かち書きできます。 kuromoji.jsは辞書ファイルをAjaxで取得しています。そのためサイズは大きくなりますが、分かち書きの精度はとても高くなります。サーバサイドで辞書を用意したり分かち書きエンジンを用意する
前にこんなツイートをしたけどもうちょっとちゃんとメモっておく ゆるふわカジュアル勢()なので内容に間違ってる点があったら教えてくださると嬉しいです 勝手なイメージだと、MeCab →一番使われてる 。速い。辞書を弄くるのが簡単。いろいろ移植されてる。Juman→出力が詳しい。代表表記に正規化できる。KNPを使うときはこれ。KyTea→新しくていろいろ更新されてる。読みの推定ができる。部分的タグ付けによるドメイン適応ができる。— 無限猿(id:sucrose)@12月病 (@Scaled_Wurm) October 22, 2014 大雑把に言うと形態素解析では文章を単語+品詞の列に分解する いわゆる学校でならった文法とは違う文法を使っているので注意が必要 ただし形態素解析器によって品詞体系や辞書に載っている単語が異なる 形態素解析器では単語や品詞の列にコストが計算できるようになっていて、そ
NTTレゾナントは12月3日、日本語解析技術に関するAPIを「gooラボ」で公開した。NTT研究所が開発し、長年「goo」で利用してきたAPIで、自社コンテンツを提供する企業やビッグデータ解析技術を求める企業などでの活用を想定している。 公開したのは、文字列を形態素に分割する「形態素解析」、2つの語句の類似度合いを算出する「語句類似度算出」、文字列から人名や地名、組織名などを抽出する「固有表現抽出」、漢字混じりで書かれた文字列をひらがなかカタカナに変換する「ひらがな化」のAPI。 今後も、企業や大学などからニーズが高い技術を公開し、オープンコラボレーションを加速するとしている。 関連記事 変わるAPIのエコシステム ヤフーはなぜ、検索APIを有料にしたか TwitterのAPI利用制限が厳しくなり、ヤフーが検索API有料化を発表し……昨年は、大規模サービスのAPI公開姿勢に大きな変化があっ
これまでに、N-gramと形態素解析の2つの検索エンジンの、見出し語の切り出し方法を説明しました。今回は、2つの見出し語の切り出し方法を比較し、それぞれの得意な点、不得意な点を明らかにしていきます。 2つの手法の概要 はじめに、2つの手法をおさらいしてみます。 形態素解析 検索対象のテキストを形態素解析を行い分かち書きを行う 分かち書きした単位を見出し語として転置インデックスを作成する 転置インデックスを元に検索を行う N-gram 検索対象のテキストをN文字単位の文字列片に分解する 分解した文字列片を見出し語として転置インデックスを作成する 検索語をN文字単位の文字列片に分け検索を行う 文字列の出現位置情報を利用すれば、漏れのない完全一致の検索が可能 大きな違いは、「転置インデックスの見出し語をどのように作るか」というプロセスが異なる点です。形態素解析は構文解析を行って分かち書きを行う
前回は形態素解析を使う検索エンジンのしくみについて説明しました。今回は、FINDSPOTで使用しているN-gramという検索エンジンのしくみについて説明します。 N-gramによる見出し語の切り出し 前回は、形態素解析による検索エンジンでは、検索可能な最小単位が分かち書きの切り分け単位となる点を説明しました。 一方、N-gramを使った検索エンジンでは、単純に文字の並びを見出し語としてインデックスを作成します。1文字を元にインデックスを作成する方法をユニグラム、2文字の並びを元にインデックスを作成する方法をバイグラム、3文字の並びを元にインデックスを作成する方法をトリグラムと呼んでいます。 1文字:ユニグラム 2文字:バイグラム 3文字:トリグラム N-gramによる見出し語の切り出しは、形態素解析のための文法解析を伴わないため、特定の自然言語に依存しないという特徴があります。 FINDS
「ドーモ。自然言語処理屋=サン。形態素解析辞書チャドーです」オジギ終了後0.7秒後。ネオサイタマのドロップボックスにアップロードされた辞書のURLが示された。 「アイエエエエ! ケイタイソカイセキ!? ケイタイソカイセキナンデ!?」 小説『ニンジャスレイヤー』の日本語訳 [1] では独特の言葉遣いが使われており、俗に「忍殺語」 [2] と呼ばれている。この忍殺語の形態素解析を行うための辞書「チャドー」のバージョン1.0.0が2014年5月10日公開された。今のところ、Dropboxを通じて配付されている。 かつてニンジャが横行していた時代、日本の人々は文字を連ねるのみで、それを分かつことを知らなかった。古事記にもそう書いている。しかし、言葉の切れ目が分からないと実際不便である。このような状況に対して、平安時代の哲学剣士ミヤモト・マサシは、ジュージツの修行中に形態素解析という手法を発見した。
MeCab に至るまでの形態素解析器開発の歴史等はこちらをご覧ください メーリングリスト 一般ユーザ向けメーリングリスト 開発者向けメーリングリスト 新着情報 2012-01-27 MeCab 0.993 MeCab::Tagger::formatNode()が正しく動いていなかった問題の修正 スタックの消費を抑えるため、ほとんどのローカル変数(配列)をヒープ上に退避 2012-01-14 MeCab 0.992 ソースコード中のTypoの修正 2012-01-14 MeCab 0.991 空文字列もしくは空白文字列を解析した時に解析エラーとなる問題を修正 ユーザ辞書の作成に失敗する場合がある問題を修正 2011-12-24 MeCab 0.99 MeCab::Model, MeCab::Lattice クラスを追加 マルチスレッド環境でのユーザビリティの向上。複数スレッドが同一
2007/08/15 検索サービスを提供するベンチャー企業のムーターは8月1日、辞書を必要としない形態素解析エンジン「マリモ」の提供を開始した。従来、形態素解析では品詞情報を含む日本語辞書を用意するのが常識だったが、マリモでは、そうした辞書を不要とした。新技術のアプローチと特性について、開発元のムーターに話を聞いた。 統計処理で単語部分を推定 形態素解析とは、与えられた文を、文法上意味のある最小の単位(形態素)に区切る処理。「今日は晴れています」なら、「今日(名詞)/は(助詞)/晴れ(動詞)/て(助詞)/い(助詞)/ます(助動詞)」と分ける。検索エンジンをはじめ、さまざまな自然言語処理の場面で必要となる基礎技術だ。 形態素解析を行うには、あらかじめ品詞情報が付加された数十万語からなる辞書を用意する必要がある。また、新語や造語、専門用語に対応するには、個別に人力で単語を登録する必要がある。
GoogleReaderが終焉し、SmartNews,Gunosyなど寝ててもおすすめコンテンツが降ってくるサービスが注目を集めている今、ここでひとつ自分もなんか気の利いたものを作ってみたい。 というわけで、はてブの人気エントリーから記事を引っ張ってきて、 ズバリ一行に要約するプログラムを書いてみた。 はいこれ。 要約くん http://xiidec.appspot.com/markov.html これを使うと・・・ けだるい猫ライオンがこの国でエリートコースに乗れると日本の真相。 こんな感じで なぜ高学歴の差別発言が求められるのかって生産性を欲しがった話をどうするか。 今話題のニュースがごちゃ混ぜになって一行に要約される。 浜崎あゆみの件、原子炉に十分届かず 炉心溶融の差別発言が続出。 Webの今が1行で分かる! 仕組み サーバサイド(Python)で、はてなブックマーク人気エントリーの
[テキストマイニング] Clojureでテキストマイニングをしたい!という方がTLにいらっしゃったので、 Clojureという言語とkuromojiという形態素解析器を用いたテキストマイニング入門の記事を書きます。 この記事の通り手を動かすと、様々なテキスト、例えばアンケートの自由記述やブログ、twitterなどの文章に形態素解析を掛け、ワードカウントと呼ばれる、ある単語が何回出現しているのかを解析する手法を使えるようになります。これを利用し、出現単語を頻度順に並べてランキングを作るなどして、その文書の特徴を明らかにするなどが出来るようになります。 ある程度コンピュータを使えることは求めますが、プログラミングの前提知識はさほど求めていません。そのため、所々天下りなところ(ここはとりあえずこうやってください!と説明無しの記述)もありますが、ご容赦ください。 形態素解析とは? 形態素解析とは、
Java で書かれた日本語形態素解析ライブラリ Kuromoji を Perl から使ってみたいなー、と思って、別の言語のプログラムから使いやすいようなインターフェイスを書きました。 Kuromoji について kuromoji - japanese morphological analyzer Java で書かれたオープンソースの日本語の形態素解析ライブラリです。 検索用のライブラリらしくて、Apache Lucene と Apache Solr に組み込まれているらしいです。 もちろん検索エンジンとは独立して利用することも可能です。 独立して使用する場合は、単に jar ファイルをダウンロードしてきて Java のライブラリパスに追加するだけ (あるいは公開されている Maven リポジトリを使用して依存関係を解決するだけ) で形態素解析できるようになります。 便利ですね。 Java
ヤフーの日本語係り受け解析APIとサンプルプログラム「なんちゃって文章要約」 2008-08-21-1 [WebTool][NLP][Programming][Algorithm] Yahoo!デベロッパーネットワーク(YDN)に 「日本語係り受け解析Webサービス」が登場しました。 Yahoo!デベロッパーネットワーク - テキスト解析 - 日本語係り受け解析 http://developer.yahoo.co.jp/jlp/DAService/V1/parse.html 「係り受けってなに?」という方もいると思うので、 以下、まったくもって厳密ではない、適当な解説を試みます。 (1) 日本語をコンピューターで処理するには、 まず形態素解析というのをやって、 文を形態素(≒単語)単位に分割します。 YDN の「日本語形態素解析Webサービス」[2007-06-18-1] で試すことができ
12月にさくさくテキストマイニングで発表したpure Rubyによる形態素解析エンジンをgem化しました。 まだ発展途上で機能が少なかったりパフォーマンスが悪かったりしますが、いちおう動くレベル*1になったので公開します。 注意事項 バージョン0.0.xのうちは、インタフェースや辞書フォーマットは頻繁に変更される予定です。 ある程度安定したら0.1.0出します。 今のところ、Ruby1.9系専用です。 取得 gem install okuraでインストールできます。 ソースは https://github.com/todesking/okura 使い方 MeCabフォーマットの辞書データを使用します。 動作確認はMeCab用NAIST辞書で行いました。 最初にokura compileコマンドで辞書をコンパイルします $ okura compile mecab-naist-jdic-0.6
そもそも、マルコフ連鎖とは何なのか?全く聞いたこともなかった。そして、文章を要約するのはとっても高度なことだと思っていて、自分のレベルではその方法を、今まで思い付きもしなかった。 しかし、以下のようなシンプルなRubyコードでそれが出来てしまうと知った時、目から鱗である...。一体、何がどうなっているのだ?コードを追いながら、マルコフ連鎖を利用するという発想の素晴らしさを知った! 作業環境 MacBook OSX 10.5.7 ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0] mecab utf8環境でインストール済み マルコフ連鎖に出逢う rssを流し読みしていると、以下の日記に目が止まった。(素晴らしい情報に感謝です!) MeCabを使ってマルコフ連鎖 一体何が出来るコードなのか、日記を読んだだけではピンと来なかっ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く