teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

foreach文の中で$mecab_resultを$mecab_result[]とすることで0番目の要素を取得できました。

2018/07/02 09:14

投稿

agep31
agep31

スコア29

title CHANGED
File without changes
body CHANGED
@@ -71,12 +71,10 @@
71
71
 
72
72
  print_r($h5_values);
73
73
 
74
- $mecab_result = [];
75
-
76
74
  $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd');
77
75
  $mecab = new \MeCab\Tagger($options);
78
76
  foreach($h5_values as $n){
79
- $mecab_result = $mecab->parse($n);
77
+ $mecab_result[] = $mecab->parse($n);
80
78
 
81
79
  }
82
80
  var_dump($mecab_result);

1

不要な変数の削除、自分の行ったことを載せました。

2018/07/02 09:14

投稿

agep31
agep31

スコア29

title CHANGED
@@ -1,1 +1,1 @@
1
- 配列にある要素に対して形態素解析を行い1つの配列に格納したい
1
+ 配列にある要素に対して形態素解析を行い配列に格納したい
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
- DOMXpathを用いて指定したURLのhtmlから特定タグを取り出し、その文章に対して形態素解析を行っています。<h5>タグを取り出した際に、以下のような結果になりました。この配列($h5_values)に対して、各要素ごとにmecabを用いて形態素解析を行い、その結果をひとつの配列に格納したいのですが、方法がわかりません。
2
+ DOMXpathを用いて指定したURLのhtmlから特定タグを取り出し、その文章に対して形態素解析を行っています。<h5>タグを取り出した際に、以下のような結果になりました。
3
3
 
4
- <配列>
4
+ <$h5_values>
5
5
 
6
6
  Array
7
7
  (
@@ -10,6 +10,29 @@
10
10
  )
11
11
 
12
12
 
13
+
14
+
15
+
16
+ この配列($h5_values)に対して、各要素ごとにmecabを用いて形態素解析を行い、その結果を配列($mecab_result)に格納したいのですが、以下のように出力したいです。
17
+
18
+ Array(0)
19
+ (
20
+   [0] => 旅行 名詞,一般
21
+   [1] => 代金 名詞,一般
22
+   ・
23
+   ・
24
+   ・
25
+   [6] => ) 記号,括弧閉
26
+   [7] => 追加 名詞,一般
27
+   [8] => 料金 名詞,一般
28
+   ・
29
+   ・
30
+   ・
31
+   [13] => ) 記号,括弧閉
32
+
33
+
34
+ 現時点では、$h5_valuesの0番目の要素が取れていないのと、解析結果全てが一つの要素として配列に入ってしまい困っています。
35
+
13
36
  ### 該当のソースコード
14
37
 
15
38
  ```ここに言語名を入力
@@ -35,8 +58,6 @@
35
58
 
36
59
  $xpath = new DOMXPath($dom);
37
60
 
38
- $h4_values = [];
39
-
40
61
  echo "/*------------<h5>----------------*/\n";
41
62
  foreach ($xpath->query('//h5') as $h5_result){
42
63
  $h5_values[]=$h5_result->nodeValue;
@@ -45,16 +66,49 @@
45
66
  echo "該当なし";
46
67
  }
47
68
 
69
+ $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd');
70
+ $mecab = new \MeCab\Tagger($options);
71
+
48
72
  print_r($h5_values);
49
73
 
74
+ $mecab_result = [];
75
+
50
76
  $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd');
51
77
  $mecab = new \MeCab\Tagger($options);
78
+ foreach($h5_values as $n){
79
+ $mecab_result = $mecab->parse($n);
80
+
81
+ }
82
+ var_dump($mecab_result);
52
83
  ```
53
-
84
+ 出力結果
85
+ ```
86
+ <!DOCTYPE html>
87
+ <html>
88
+ <head>
89
+ <title>研究</title>
90
+ </head>
91
+ <body>
92
+ /*------------<h5>----------------*/
93
+ Array
94
+ (
95
+ [0] => 旅行代金(お一人様)
96
+ [1] => 追加料金(お一人様)
97
+ )
98
+ string(381) "追加 名詞,サ変接続,*,*,*,*,追加,ツイカ,ツイカ
99
+ 料金 名詞,一般,*,*,*,*,料金,リョウキン,リョーキン
100
+ ( 記号,括弧開,*,*,*,*,(,(,(
101
+ お 接頭詞,名詞接続,*,*,*,*,お,オ,オ
102
+ 一人 名詞,固有名詞,人名,名,*,*,一人,カズト,カズト
103
+ 様 名詞,接尾,人名,*,*,*,様,サマ,サマ
104
+ ) 記号,括弧閉,*,*,*,*,),),)
105
+ EOS
106
+ ```
54
107
  ### 試したこと
55
108
 
56
109
  php-mecabの動作は確認済みです。きちんと動作しています。
57
110
 
111
+
58
112
  ### 補足情報(FW/ツールのバージョンなど)
59
113
 
60
114
  ubuntu18.04