• 締切済み

PHP mecab extensionで

PHP mecab extensionで名詞と動詞の抽出を行いたいです。 なので、抽出のサンプルコードが掲載されているサイトをご存知でしたら教えてください。 ちなみに下記のサイトは閲覧しました。 http://www.booster-technology.com/archives/2007/12/phpmecab.html ただ、このサイトでは文字種を条件として抽出を行っており 正確には「名詞」のみを抽出しているわけではなく、 またひらがなの「名詞」が抽出されていなかったりしました。 なので名詞、動詞の抽出を行うサンプルコードが見たいと思います。 よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

PHP Mecabは、開発者サイトから、ソースをダウンロードすると、その中にexamplesフォルダがあるので、 そのなかに書いてあるサンプルぐらいしか、マニュアル的なものはないようです。

関連するQ&A

  • mecab-pythonのインストールに失敗しまし

    先ほどmecabのインストールに成功して、今度はmecab-pythonをインストールしようとしたら、失敗したようです。 参考にしたサイトは以下です http://tatsuyaoiw.hatenablog.com/entry/20120414/1334405065 ●mecabのインストール直後 root@debian:/usr/local# mecab 参考までに、私がインストールした手順を下に書きます。 参考 名詞,サ変接続,*,*,*,*,参考,サンコウ,サンコー まで 助詞,副助詞,*,*,*,*,まで,マデ,マデ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 、 記号,読点,*,*,*,*,、,、,、 私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 手順 名詞,一般,*,*,*,*,手順,テジュン,テジュン を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 下 名詞,一般,*,*,*,*,下,シタ,シタ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 書き 動詞,自立,*,*,五段・カ行イ音便,連用形,書く,カキ,カキ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス 。 記号,句点,*,*,*,*,。,。,。 EOS ^Z ●ここからmecab-pythonインストール開始 root@debian:/usr/local# wget *ttp://mecab.googlecode.com/files/mecab-python-0.993.tar.gz --2015-01-08 06:05:07-- *ttp://mecab.googlecode.com/files/mecab-python-0.993.tar.gz mecab.googlecode.com (mecab.googlecode.com) をDNSに問いあわせています... 173.194.72.82 mecab.googlecode.com (mecab.googlecode.com)|173.194.72.82|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 63267 (62K) [application/x-gzip] `mecab-python-0.993.tar.gz' に保存中 100%[======================================>] 63,267 147K/s 時間 0.4s 2015-01-08 06:05:09 (147 KB/s) - `mecab-python-0.993.tar.gz' へ保存完了 [63267/63267] root@debian:/usr/local# tar zxvf mecab-python-0.993.tar.gz mecab-python-0.993/ mecab-python-0.993/MeCab.pyc mecab-python-0.993/LGPL mecab-python-0.993/BSD mecab-python-0.993/COPYING mecab-python-0.993/setup.py mecab-python-0.993/test.py mecab-python-0.993/MeCab.py mecab-python-0.993/GPL mecab-python-0.993/bindings.html mecab-python-0.993/README mecab-python-0.993/MeCab_wrap.cxx mecab-python-0.993/AUTHORS root@debian:/usr/local# cd mecab-python-0.993 root@debian:/usr/local/mecab-python-0.993# python setup.py build running build running build_py creating build creating build/lib.linux-x86_64-2.7 copying MeCab.py -> build/lib.linux-x86_64-2.7 running build_ext building '_MeCab' extension creating build/temp.linux-x86_64-2.7 gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/usr/include/python2.7 -c MeCab_wrap.cxx -o build/temp.linux-x86_64-2.7/MeCab_wrap.o cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/MeCab_wrap.o -L/usr/local/lib -lmecab -lstdc++ -o build/lib.linux-x86_64-2.7/_MeCab.so root@debian:/usr/local/mecab-python-0.993# sudo python setup.py install running install running build running build_py running build_ext running install_lib copying build/lib.linux-x86_64-2.7/_MeCab.so -> /usr/local/lib/python2.7/dist-packages copying build/lib.linux-x86_64-2.7/MeCab.py -> /usr/local/lib/python2.7/dist-packages byte-compiling /usr/local/lib/python2.7/dist-packages/MeCab.py to MeCab.pyc running install_egg_info Writing /usr/local/lib/python2.7/dist-packages/mecab_python-0.996.egg-info ●ここからmecab-python試験 root@debian:/usr/local/mecab-python-0.993# python Python 2.7.3 (default, Jan 2 2013, 13:56:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import MeCab Traceback (most recent call last): File "<stdin>", line 1, in <module> File "MeCab.py", line 25, in <module> _MeCab = swig_import_helper() File "MeCab.py", line 17, in swig_import_helper import _MeCab ImportError: libmecab.so.2: cannot open shared object file: No such file or directory >>> import sys >>> import MeCab Traceback (most recent call last): File "<stdin>", line 1, in <module> File "MeCab.py", line 25, in <module> _MeCab = swig_import_helper() File "MeCab.py", line 17, in swig_import_helper import _MeCab ImportError: libmecab.so.2: cannot open shared object file: No such file or directory このOSにはipythonというものがあり、いわゆるインテリセンスがコンソールから使えるのですが、"MeCab"を補完しません。 どうすれば良いのでしょうか Linux未熟者は手を出さないほうが良かったかも

  • perl MeCab 和布蕪 エラー

    perlで、テキストを形態素解析し、専門用語を抽出するコードを書いています。 Text::MeCab と TermExtract::MeCab; を利用しているのですが、 よくわからないエラーがでます。 以下 ソースとエラー文になります。 <ソース> #! /usr/bin/perl use Text::MeCab; use TermExtract::MeCab; my $text = "私はももが好きです。"; my $mtext = getMecabText($text); sub getMecabText{ my ($text) = shift @_; my @arg = ($0,"Ochasen"); my $mecab = new Text::MeCab::Tagger(\@arg); my $exdata = new TermExtract::MeCab; $text = $mecab->parse($text); return $text; } printKeyWord($mtext); sub printKeyWord{ my ($mtext) = shift @_; my $data = new TermExtract::MeCab; my $output_mode = 1; $data->use_TF; my @noun_list = $data->get_imp_word($mtext,'var'); foreach (@noun_list) { next if $_->[0] =~ /^(昭和)*(平成)*(\d+年)*(\d+月)*(\d+日)*(午前)*(午後)*(\d+時)*(\d+分)*(\d+秒)*$/; next if $_->[0] =~ /^\d+$/; printf "%-60s %16.2f\n", $_->[0], $_->[1] if $output_mode == 1; printf "%s\n", $_->[0] if $output_mode == 2; printf "%s,", $_->[0] if $output_mode == 3; } } <エラー文> Can't locate loadable object for module Text::MeCab in @INC (@INC contains: C:/usr/site/lib C:/usr/lib .) at C:/usr/lib/DynaLoader.pm line 21 BEGIN failed--compilation aborted at C:/usr/lib/Text/MeCab.pm line 21. Compilation failed in require at ./lab/a.cgi line 2. BEGIN failed--compilation aborted at ./lab/a.cgi line 2. C:/usr/site/lib と C:/usr/lib の中に MeCab.pmファイルを置いても同じエラーがでます。 DynaLoader.pm line 21 や MeCab.pm line 21 は改行のみでした。 MeCab.pm は http://search.cpan.org/~dmaki/Text-MeCab-0.20013/lib/Text/MeCab.pm の Source にあるものをコピペして設置しています。 いろいろと格闘したのですが、お手上げ状態です。 原因がわかる方いらっしゃれば教えていただきたいです。 よろしくお願いしいたします。

  • 形態素解析とtfidf計算処理のjavaプログラム

    二つのプログラムを作成しようと思っています。 1、一行に「単語<tab>数字列(132:1,83:2,........)」という形のデータが存在するファイルを読み込んで、単語の部分(殆ど名詞)だけ抽出し形態素解析(cmecabを使用)して名詞の何の種類かによって値を与え、一行に「単語<tab>値」という形でテキストファイルに出力するプログラム 値について 一般名詞、固有名詞の場合:2 形容動詞語幹の場合:1 サ変接続、副詞可能、ナイ形容詞語幹、接尾、非自立の場合:0.5 代名詞、数詞、その他(動詞や副詞、接頭詞)の場合:0 例:読み込むファイルの中身(単語<tab>文書番号:その文書での単語の出現回数,.........) 小学校 76:1,167:1,254:1,395:1,400:1,488:1 旦那 183:1 委員 275:1 最終 401:1 月曜日 376:1 以下のプログラムはCmecabでテキストファイルを読み込んで形態素解析し出力するプログラム。これを改造すればいけると思っています。 // 引数に解析したいファイルを指定 // 結果は"cmecab-output.txt"に出力 // コンパイル方法"javac -encoding utf8 cmecab.java" // 入力ファイルの文字コードはUTF8で保存しておく // 出力ファイルの文字コードもUTF8で出力されるので注意 // Mecabの辞書はUTF8でコンパイルしておくこと import net.moraleboost.mecab.Tagger; import net.moraleboost.mecab.impl.StandardTagger; import net.moraleboost.mecab.Node; import java.io.*; import java.util.*; import java.lang.*; public class cmecab{ public static void main(String[] args) throws Exception{ // 引数が無い場合はヘルプを表示 if (args.length == 0) { System.out.println("使用方法: java cmecab [入力テキストファイル名]"); return; } // バージョン文字列を取得 System.out.println("MeCab version: " + StandardTagger.version()); // 入出力ファイルの設定 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF-8")); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("cmecab-output.txt"), "UTF-8")); String text = ""; while((text = br.readLine()) != null){ // Taggerを構築。 // 第一引数には、MeCabの辞書の文字コードを与える。 // 第二引数には、MeCabのcreateTagger()関数に与える引数を与える。              Tagger tagger = new StandardTagger("UTF-8", ""); // tagger.parse()を呼び出して、文字列を形態素解析する。 // 返されるオブジェクトは、Iterator<String>を実装している。 Node node = tagger.parse(text); // 一つずつ形態素をたどりながら、表層形と素性を出力 while (node.hasNext()) { String surface = node.next(); String feature = node.feature(); bw.write(surface + "\t" + feature +"\n"); } // taggerをクローズ tagger.close(); } br.close(); bw.close(); } } 例:形態素解析して出力される形(「単語<tab>品詞,名詞の形」において「名詞の形」の部分を抽出して上記に書いた値に振り分けたいと思っている。) 70 名詞,数,*,*,*,*,* : 名詞,サ変接続,*,*,*,*,* 1 名詞,数,*,*,*,*,* 何処 名詞,代名詞,一般,*,*,*,何処,ドコ,ドコ 2、1で読み込んだ「単語<tab>文書番号:その文書での単語の出現回数,.........」という形のファイルを読み込んでtfidf値を求め、一行に「単語<tab>tfidf値」という形でテキストファイルに出力していくプログラム tfidfの定義 tf=文書番号Yにおける単語Xの出現確率(出現確率の分母はその文書における単語の合計数) idf=log(文書の合計数/単語Xを含む文書数) よろしくお願いいたします。

  • ひらがなチェック

    Perl全くの初心者です。基本的なことかもしれませんが、お願いします。 テキストに入力されたデータが適当な値であるかどうかのチェックを行いたいと思っています。 ふりがなの項目にひらがな以外の文字が入っていないか調べたいのですが、参考になるサイトやサンプルコーディングなどあれば教えていただけますか? ひらがなのチェックは文字コードを用いてチェックしたいのですが、どのようにコーディングしたらよいのかわからず、困っています。

    • ベストアンサー
    • Perl
  • Let's+NOUN

    レッツスイミング、レッツイングリッシュ、…みたいなことを言う日本人がいますが、あれは全くの和製英語(正確には和製英文)ですか。あるべき動詞が省略された感じがありつつも慣用として許容というものもあるかと思うのですが・・・。(レッツロックンロールについては、このサイトにも先行Qがありましたね) Let'sの後に来るのは、教科書的には動詞の原型ですが、名詞(動名詞を含む)を直接付ける言い方はどこまで認められるものでしょうか? スラング的な表現に線は引き難いでしょうが、典型的にだめなケース、実際によく使われるケースの実例を挙げていただくだけでも結構です。できれば、何か法則のヒントになりそうなものを。

  • 「続行するには何かキーを押してください」の方法は?

    例えばWindowsのクリーンインストール時に「続行するには何かキーを押してください」といったメッセージが表示されて、キーを押さないとそこから進まないといったものがありますよね。これと同様のことをCUIベースのJavaプログラムでやりたいのですが、その方法あるいはサンプルコードの掲載されているサイトなどはありますでしょうか?

    • ベストアンサー
    • Java
  • サンプルコードを公開しているサイトについて

    今検索エンジンでサンプルコードを探しています。 多種様々なコードが掲載していて、 分り易い説明が掲載しているサイトとか。 自分はVB2008を使用していますが、種類豊富なサイトが見つかりません。 良いサイトありませんか? 数種類位教えて下さい 「私はこのサイトで様々なソースがあって便利だ」 「種類が豊富で良い」等の紹介もお願いします。 ●現在自分がブックマーク(お気に入り)に入れているサイト● @DOBON.NET プログラミング道@ ​http://dobon.net/vb/dotnet/index.html​ @これがほしかった!厳選サンプルツール集@ ​http://anetm.com/dev/tools/vbdotnet/​ @MSDN Home@ ​http://www.microsoft.com/japan/msdn/thisweek/wednesday/​ @VBレスキュー(花ちゃん)@ ​http://hanatyan.sakura.ne.jp/​

  • 中心極限定理について

    中心極限定理についていろいろ調べたんですが、よくわからないことがあります。 (ほとんどの)任意の母集団(平均μ、分散σ^2)からn個の確率変数x1, x2, x3 .... xn を無作為抽出すると、平均値X を求めると、その平均値の分布は、nが大きくなると正規分布(平均μ、分散σ^2 / nの平方根)に近づく と書いています。 ある母集団分布をおいて、n = 6 として、 サンプル1: x1, x2, x3, x4, x5, x6 を抽出し、平均値 X1 を求める サンプル2: また、x1, x2, x3, x5, x6 を抽出し、平均値 X2 を求める サンプル3: また、x1, x2, x3, x5, x6 を抽出し、平均値 X3 を求める と同様に、やっていくのですよね? で、この「1回に抽出するデータがn」(上記では n = 6)であり、この nが大きくなると正規分布に近づくということなんですが、 サンプル数(平均値Xの数)はいくつを想定しているのでしょうか? サンプルが無限だったら、n = 2 だろうが、n = 100 だろうが正規分布のような気がするのですが。 いろいろなサイトで、 n = 1 や、n = 2 のケースでやったときの分布図が掲載されているのですが、これはサンプル自体の数が多いのでしょうか? n の意味と、サンプルの数(平均値Xの数) が混乱しているようです。 教えてください。

  • エクセル2003マクロ

    特定のフォルダに同じサンプルNoのファイルがA~Dまで4種類ずつあり、これらから必要なデータを抽出し、同一Noに対して一つの集計ファイルを作成するマクロを作りたいと思っています。 ユーザーフォームで1台ずつサンプルNoを入力すれば、抽出→集計まで処理できるコードはできたのですが、サンプルNoを指定せずにコマンドボタン1発でフォルダ内のサンプル全てを同様に処理できる方法が分かりません。色々なサイトを覘きましたが、妥当な例がなく困っています。 ファイル名はそれぞれ、 A-1.xls、B-1.xls、C-1.xls、D-1.xls、A-2.xls、B-2.xls・・・という規則でついていて、全て同じフォルダに保存されています。 どなたか良い知恵をお貸し下さい。

  • printfの書式%.*s

    海外のサイトに掲載されているサンプルコード中のprintfの書式がわかりません。 printf("%2d: %.*s\n", i, ovector[2*i+1] - ovector[2*i], str + ovector[2*i]); PCREのサンプルの中に出てくるコードですが、上記の「%.*s」は、どういった意味になりますか? よろしくお願いいたします。 http://stackoverflow.com/questions/1421785/how-can-i-use-pcre-to-get-all-match-groups