MeCab で UniDic 辞書を使ってみる MeCab で使える形態素解析用の辞書は、IPA 辞書の他にもいくつか公開されています。そのひとつであるUniDic は、IPA 辞書よりも個々の単語を詳細に分類したもので、分割した形態素が文中で果たす役割をより精密に検出することができます。UniDic はメンテナンスが頻繁に行われているようで、最新版は 1 ヶ月ほど前の 2013/3/14 にリリースされた 2.1.2 になります。ライセンス形態は GPL、LGPL、BSD License のトリプルライセンスとなっていて、その点でも、エンジニアにとっても採用しやすい辞書となっています。 今回はこの UniDic を実際にビルドし、MeCab から使ってみることと、辞書の再学習までを試してみました。 MeCab で UniDic を使うUniDic はバイナリ辞書も配布されていますが、ここ
目次 概要/特徴 リリースノート インストール/使い方 jarファイル 解析用辞書作成 形態素解析 コマンド BuildDic Igo Java API Tagger Morpheme サンプルコード MeCabとの相違点 解析結果 機能 辞書ファイル 単語エントリフォーマット 制限/注意点 禁則文字 バイナリ辞書エンディアン ライセンス バグ報告など 概要/特徴 Javaで実装された形態素解析器。→ Common Lisp版 辞書フォーマット及び解析結果は、ほぼMeCab互換。 単機能。 Javaの形態素解析器としては比較的高速。 スレッドセーフ。 リリースノート version 0.4.3: 2011年06月17日 形態素解析部の微細なパフォーマンスチューニング インストール/使い方 1) jarファイルの取得/作成 jarファイルは以下のいずれかの方法で取得/作成する。 ダウンロード
TinySegmenterはJavascriptだけ書かれた極めてコンパクトな日本語分かち書きソフトウェアです。 わずか25kバイトのソースコードで、日本語の新聞記事であれば文字単位で95%程度の精度で分かち書きが行えます。 Yahoo!の形態素解析のように サーバーサイドで解析するのではなく、全てクライアントサイドで解析を行うため、セキュリティの 観点から見ても安全です。分かち書きの単位はMeCab + ipadicと互換性があります。 デモ 日本語の文章を入力し、解析ボタンをクリックしてください。 ダウンロード TinySegmenterはフリーソフトウェアです. 修正BSDライセンスに従って本ソフトウェアを使用,再配布することができます. Download TinySegmenter version 0.2 使い方 <script type="text/javascript" src
MeCabはC/C++で書かれた形態素解析を行うライブラリなのですが、ちょっと疑問に思うところがあって、以下のようなコードを書きました。 require 'MeCab' mecab_options = '-Owakati' 1000.times do |n| begin tagger = MeCab::Tagger.new(mecab_options) # do something with tagger rescue => e raise "failed at #{n + 1} times, [#{e.class}] #{e.message}" end end マシンスペックに依りますが、大体例外が発生します。MeCab::Taggerのインスタンスが破棄されているにも関わらず! 僕のMacBook Air(メモリ2GB)で試したところ、"failed at 70 times, [Run
概要 MeCabのTaggerとかLatticeをC++から直接呼んで形態素解析してみた。 MeCabのコードリーディングをしようかと思ったので、その前に生っぽい感じのコードを書いて感覚を養ってみようという試み。 尚、本記事のサンプルコードはエラー処理とか全然してないので注意。 簡易コード まずは極力シンプルなコードで形態素解析を実行してみる。 #include <iostream> #include <mecab.h> int main(int argc, char **argv) { char input[1024] = "ジョニーは戦場へ行った"; MeCab::Tagger *tagger = MeCab::createTagger(""); const char *result = tagger->parse(input); std::cout << result << std:
MeCab 0.90 における mecabrc ファイルの優先順位 1. コマンドラインパラメータ -r, --rcfile で指定した mecabrc ファイル 2. 環境変数 HOME が設定されている場合 ~/.mecabrc ファイル 3. 環境変数 MECABRC で指定した mecabrc ファイル 4. レジストリ HKEY_LOCAL_MACHINE\software\mecab\mecabrc の mecabrc ファイル [Windowsのみ] 5. レジストリ HKEY_CURRENT_USER\software\mecab\mecabrc の mecabrc ファイル [Windowsのみ] 6. DLL と同じディレクトリの mecabrc [Windowsのみ] 7. MECAB_DEFAULT_RC UNIX は /usr/local/etc/mecabrc
概要 MeCab0.994で再学習機能が入ったので、その辺りも含めてMeCabの辞書カスタマイズ方法を洗ってみる。 今回取り扱うのは、CSV形式で新しい単語の情報を記述して辞書を生成(mecab-dict-index)する方法と、文章の解析結果を用意してそれを利用して学習(mecab-cost-train)する方法。 Linuxで実行。Windowsは知らない。 単語追加用のCSVファイルを作成する まずはCSVファイルを手書きして、MeCabの辞書に新しい単語を追加してみる。 やり方は公式サイトに載っている。 今回は例として「アメリカの大統領の名前くらい登録しておきたいよね」ということでバラクとオバマという2つの固有名詞を追加してみる。両単語はIPA辞書では未知語になっている。 $ echo "バラク・オバマ" | mecab -U"%M\t%H\t未知語\n" バラク 名詞,一般,*,
404 お探しのページは見つかりません GREE Engineering トップへ戻る
Mecab on iPhoneはiPhone上で形態素解析エンジンであるMecabを利用するデモ&ライブラリ。 Mecab on iPhoneはiPhone用のフリーウェア(ソースコードは公開されている)。オンラインにはテキストコンテンツが溢れている。また、最も手軽に扱えるコンピュータ上のデータとしてテキストは筆頭にあげられるだろう。 デモアプリ そんなテキストコンテンツの内容を解析して扱う上で形態素解析は欠かすことができない。有名な形態素解析エンジンであるMecabをiPhone上で扱えるようにするライブラリ&デモアプリがMecab on iPhoneだ。 Mecab on iPhoneはiPhoneにStatic Libraryとして追加したMecabを使い、iPhone上で形態素解析を行うソフトウェアだ。Mecabをコンパイルし、それをデモアプリで読み込んで利用する。筆者環境ではシミ
メモがわりに MeCab + Python のインストールで引っかかったところを書く。 状況:研究室のサーバのローカル環境にインストールする。suになれる権限はない。 1.MeCabのインストール とりあえずmecab-0.98を持ってくる。 wget http://sourceforge.net/projects/mecab/files/mecab/0.98/mecab-0.98.tar.gz そして、インストール ./configure --prefix=自分のローカル --with-charset=utf8 を打ち込む。 「--prefix=自分のローカル」がないと、勝手に/usr/local/のほうにインストールされることになって、もちろんそんな権限はないのでエラーが起きる。 makeのときに、 make[2]: `all' に対して行うべき事はありません。 make instal
はじめに テキストデータから、専門用語を取り出すためのPerlモジュール"TermExtract"を解 説します。 日本語の文章中から単語を切り出す定番のソフトとして、「茶筅」や「案山子」があ りますが、そのまま専門用語の抽出に使うには次の2つの問題があります。 ひとつは、複合語に対応していないことです。専門用語の多くは単語を組み合わせて、 複雑な概念を表すことが多くなります。特に「茶筅」の場合は単語を品詞単位で細かく 分割するため、そのまま使うには難があります。 もうひとつは、どの用語が重要であるか判断する仕組みを持たないことです。 その問題点を解決したソフトに東京大学・中川裕志教授、横浜国立大学・ 森辰則助教授が作成した「専門用語自動抽出システム」があります。 それは、1)「茶筅」の形態素解析結果を複合語に組み立て、2)その複合語(単語の場 合もある)を重要度の高い順に返すものです。
今回はこの言葉の解析をMeCab+NAIST辞書にお願いして、結果を分析することで、MeCabが行っているコスト計算について勉強してみたいと思います。 とりあえず実行してみる さっそくMeCabに「日本テレビ東京」を解析してもらいましょう。 $ echo 日本テレビ東京 | mecab 日本 名詞,固有名詞,地域,国,*,*,日本,ニッポン,ニッポン,, テレビ東京 名詞,固有名詞,組織,*,*,*,テレビ東京,テレビトウキョウ,テレビトーキョー,, EOS 「日本 | テレビ東京」と分けていますね。視聴率的には負けていますが、NAIST辞書的には日本テレビよりもテレビ東京が優先されたようです。 ちなみに「フジテレビ東京」ではどうなるでしょうか。 $ echo フジテレビ東京 | mecab フジテレビ 名詞,固有名詞,組織,*,*,*,フジテレビ,フジテレビ,フジテレビ,, 東京 名詞,
今年の初めくらいにメモして後でまとめようと思っていた話なんだけど、さっぱりまとめる暇が取れないまま放置されていたので、メモをそのままブログに貼っておく。 MeCab(辞書はNAIST)で遊んでいたら、スクエニが以下のように解析された。 echo スクエニ | mecab スクエニ 感動詞,*,*,*,*,*,* EOS 感動詞になっている。出来れば名詞が良いなぁと思う。 スクエニは未知語として判定されていると思われる。 未知語判定されているかどうかは、-F%Sすれば分かる。 1が出れば未知語、0は辞書にある語。 echo スクエニ魔法 | mecab -F"%m\t%s\n" スクエニ 1 魔法 0 EOS 未知語については「/usr/local/lib/mecab/dic/naist-jdic/unk.def」を見れば分かる。 KATAKANA,1358,1358,3869,名詞,一般,
$Id: dic.html 161 2008-02-03 09:58:46Z taku-ku $; 概要 辞書への単語追加には, 二つの方法があります. システム辞書への追加 ユーザ辞書への追加 システム辞書への追加 辞書更新が頻繁でないときや, 解析速度を落としたくない時は, 直接 システム辞書を変更するのがよいでしょう. mecab-ipadic があるディレクトリに移動 foo.csv というファイルを作成 (拡張子が .csv なら何でも可) foo.csv に単語を追加 辞書の再コンパイル + インストール % /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t euc-jp % su # make install -f charset: CSVの文字コード -t charset: バイナリ辞書の文字コード 例: u
$Id: learn.html 161 2008-02-03 09:58:46Z taku-ku $; 概要 学習用コーパスからパラメータ(コスト値)を推定することができます. MeCab 自身は品詞体系に非依存な設計になっているため, 独自の品詞体系, 辞書, コーパスに基づく解析器を作成することができます. パラメータ推定には Conditinoal Random Fields (CRF) を使っています. 処理の流れ データフロー図は次のようになります. パラメータ推定には以下のサブタスクがあります. Seed辞書の準備 設定ファイルの準備 dicrc char.def unk.def rewrite.def feature.def 学習用コーパスの準備 学習用バイナリ辞書の作成 CRF パラメータの学習 配布用辞書の作成 解析用バイナリ辞書の作成 評価 それぞれ順に説明
ユーザー辞書への単語の追加 単語の追加方法 同梱しているCSVファイル(vocaloid.csv)を編集して、単語を追加できます。 ここでは、固有名詞などの活用しない語の追加方法を説明します。 活用する語の追加など、細かい規則はMeCab公式の単語の追加方法のページを参照してください。 フォーマットの簡単な解説 下の図はcsvファイルをExcelで開いたところです。 26行目の「表層形~」は、辞書のフォーマットとの対応を見やすくするために書いたものです。実際にはこの行は必要ありません。 上記画像の「表層形」(A列)が読ませたい単語、「発音」の列(M列)の文字が、ロボ声で発音される読みになります。 発音は基本的に「読み」(L列)と同じでOKですが、ロボ声の発音を読みと変えたい場合(例:スイート→スウィート 等)は、「発音」列を変更すればその通り読んでくれます。 「左文脈ID」「右文脈ID」(
文脈IDは-1を指定すれば自動採番してくれるという噂だったのですが、実行したら「自動で探したけど、対応するのが見つからなかったよ」と言われた為(文字コードの問題かな)、自前でシステム辞書ディレクトリ内の「left-id.def」と「right-id.def」を探して、それっぽいIDを拾ってきました(本当にこの方法で良いのか未確認)。 辞書によってIDは変わってきて、IPA辞書の「名詞,一般」は、我が家の環境では1285になっていました。バージョンによっても違う可能性もあるので注意が必要です。 読み・発音については、はてなのファイルの読みは全て平仮名で記述されているので、NAISTの辞書に合わせる為に片仮名に変換して登録します。発音は本来「アマクサシロー」になるべきですが、その辺は変換してると面倒なのでこのままで。 参考URLでは、CSVの末尾に「はてなキーワード」と入れて、はてなの辞書が使
(インストールの仕方などはほかの人がいっぱい説明してくれているので割愛) どうやら標準の辞書だけだと限界があるようので、以下の記事などを参考に 「wikipediaとhatenaキーワードをユーザ辞書として利用する」 ということをやってみました。 http://d.hatena.ne.jp/code46/20090531/p1 http://www.mwsoft.jp/programming/munou/mecab_hatena.html http://deepneko.dyndns.org/kokotech/2009/06/mecabwikipedia.html 作ったのは以下の2つのスクリプト。 webからデータを取ってきて、csv作成コマンド、辞書作成コマンドを呼び出すshell (convWebWordsToDic.sh) #!/bin/sh CSV=../data/words.c
MeCabで形態素解析器を作りたい場合は以下の二つの言語リソースが必要です。 1. 辞書 (単語と品詞のペアの集合) 2. 入力文と、それに対応する正解出力ペア(正解データ) 現在公開している mecab-ipadic は、ipadicとRWCPコーパスという正解データを使っています。 ここから分かるとおり、少なくともMeCabを使う場合は、コスト値を丹念にチューニング するといった職人芸は要りません。形態素解析への入力文とそれに対応する(理想)出力 があればコスト値を機械学習的なアプローチで構築することができます。 さらに、正解データを人手で作る必要は必ずしもありません。 すなわち、Yahoo!の形態素解析器の出力結果を「擬似正解」とみなして MeCabの学習プログラムを走らせれば、Yahoo!の出力を高い精度で再現できる MeCab用辞書を作成することが原理的に可能です。 ふだんはあま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く