質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

解決済

1回答

1649閲覧

php-mecabを使って、地域と判断された単語を抽出したい。

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2019/11/19 06:19

前提・実現したいこと

ubuntuでphpを使ってtwitterからデータを取得、jsonに格納し、jsonの[text]の形態素解析をしています。
php-mecabを使っているのですが、地域判断された単語だけを取り出す方法が分かりません。
<出力結果>
BOS/EOS,,,,,,,,
東京都港区六本木
名詞,固有名詞,地域,一般,,,東京都港区六本木,トウキョウトミナトクロッポンギ,トーキョートミナトクロッポンギ

記号,空白,,,,, , , 
六本木ヒルズ
名詞,固有名詞,一般,,,,六本木ヒルズ,ロッポンギヒルズ,ロッポンギヒルズ

助詞,連体化,
,,,,の,ノ,ノ

名詞,非自立,副詞可能,
,,,上,ウエ,ウエ

助詞,格助詞,一般,,,,に,ニ,ニ

動詞,自立,
,,一段,連用形,いる,イ,イ
ます
助動詞,
,,,特殊・マス,基本形,ます,マス,マス

記号,句点,,,,,。,。,。

BOS/EOS,,,,,,,,

該当のソースコード

<?php $file = file_get_contents("tweets.json"); $options = array('-d', '/usr/local/lib/mecab/dic/mecab-ipadic-neologd'); $file2 = json_decode($file,true); $json_count = count($file2["statuses"]); $tweets = $file2['statuses'][0]['text']; $mecab = new \MeCab\Tagger($options); $nodes = $mecab->parseToNode($tweets); foreach($nodes as $n) { echo $surface = $n->getSurface() . "<br />"; echo $feature = $n->getFeature() . "<br />"; } ?>

補足情報(FW/ツールのバージョンなど)

php 7.0.33

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$feature をカンマで分割し、先頭から3番目の要素の値が「地域」かどうかを判定し、真であるときの単語を取り出せばよいのではないでしょうか。

なお、この例の「六本木ヒルズ」は 3番目の要素の値が「地域」となっていないため、当然地域として取り出すことができません。
これをなんとかしたいというなら、「六本木ヒルズ」を「地域」としている辞書を探してきて MeCab にインストールして利用するか、単語を取り出す際に独自に「地域」かどうかを判定するコードを追加するかが必要です。

投稿2019/11/19 08:18

2KOH

総合スコア999

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/20 00:09

出来れば前者のコードを教えていただけないでしょうか?
2KOH

2019/11/20 00:51

このサイトは丸投げの質問は非推奨であり、私も基本的にはその方針に従うつもりです。 「$feature をカンマで分割し、先頭から3番目の要素の値が「地域」かどうかを判定し、真であるときの単語を取り出すコードを教えてくれ」というのはまさに丸投げなので、答えたくありません。 具体的なやり方は上記の通り提示していますし、使う関数や構文はどれも入門レベルです。 あとはご自身でがんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問