前提・実現したいこと
複数のURLから名詞を抽出し、URLごとの配列に格納したいです。
URLからのhtmlの取得、mecabでの形態素解析はできているのですが、現時点では複数のURLから形態素解析した結果がURLごとに分けられておらず、一つの配列に入っている状態です。これを以下のようにしたいのですが、どのようにすればよいかわからず困っています。
<現在の形> ・$body_text(urlからbodyタグの抽出) Array ( [0]当ブログの最新記事や月別アーカ・・・ [1] スマートフォン用の表示でnewd・・・ ) ・$result(名詞の抽出) Array ( [0]無料 [1]ログイン [2]まとめ ・ ・ ・ [849]都市 ) <理想の形> ・$body_text(urlからbodyタグの抽出) Array ( [0]当ブログの最新記事や月別アーカ・・・ [1] スマートフォン用の表示でnewd・・・ ) ・$result(名詞の抽出) Array ( [0] [0]無料 [1]ログイン [2]まとめ ・ ・ ・ [410]言葉 [1] [0]キーボード [1]殺人 [2]町 ・ ・ ・ [849]都市 )
$result[0]には$body_text[0]の名詞の抽出結果を格納し、$result[1]には$body_text[1]の名詞の抽出結果を格納したいです.
該当のソースコード
<!DOCTYPE html> <html> <head> <title>研究</title> </head> <body> <?php $opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0rn")); $context = stream_context_create($opts); $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd'); $mecab = new \MeCab\Tagger($options); $url = array("https://matome.naver.jp/odai/2145532060816761001", "https://www.jyunpuumanpan.com/entry/2017/06/19/210000"); foreach($url as $tmp){ $html = file_get_contents($tmp,false,$context); $dom = new DOMDocument; @$dom->loadHTML( mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII,JIS,UTF-8,eucJP-win,SJIS-win'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD ); $xpath = new DOMXPath($dom); $body_text[] = str_replace(array(" ", " ", " ", " ", "◆", "■", "●", "★", "\xC2\xA0", "\r\n", "\r", "\n", "\t", PHP_EOL), "", $xpath->query('//body')->item(0)->nodeValue); foreach($body_text as $tmp){ $nodes = $mecab->parseToNode($tmp); foreach($nodes as $tmp2){ if($tmp2->getPosId() == 38){ $result[] = $tmp2->getSurface(); } } } } echo "<pre>"; print_r($body_text); print_r($result); echo "<pre>";
補足情報(FW/ツールのバージョンなど)
ubuntu18.04
Apache/2.4.29
PHP 7.2.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。