回答編集履歴

1

追記への対応

2018/06/18 16:35

投稿

KojiDoi
KojiDoi

スコア13669

test CHANGED
@@ -11,3 +11,101 @@
11
11
 
12
12
 
13
13
  RMeCabCなるものがどんな構造のデータを返してくるかは、`str(word)`などとして眺めてみるといいと思います。
14
+
15
+
16
+
17
+ ### 追加 2018/06/18 17:30をうけて追記
18
+
19
+
20
+
21
+ 乗りかかった舟で、手元のcentOSにRMeCabをインストールして眺めてみました。「リストが入れ子」とした推測は事実ではありませんでした。しかし回答者さんの認識もおそらく正確ではありません。
22
+
23
+
24
+
25
+ 多分回答者さんは、MeCabCが吐き出したlistであるwordの構造を次のようにとらえておられると思います。
26
+
27
+ ||リストの要素(単語)|名前(品詞)|
28
+
29
+ |:--|:--:|--:|
30
+
31
+ |1|いつも|副詞|
32
+
33
+ |2|答え|動詞|
34
+
35
+ |3|て|助詞|
36
+
37
+ |4|くれ|動詞|
38
+
39
+ |5|て|助詞|
40
+
41
+ |6|ありがとう|感動詞|
42
+
43
+
44
+
45
+ しかし正確には、次のようになっているのですね。
46
+
47
+ ||リストの要素|
48
+
49
+ |:--|:--:|
50
+
51
+ |1|1番目の単語に対応する名前付きベクトル|
52
+
53
+ |2|2番目の単語に対応する名前付きベクトル|
54
+
55
+ |3|3番目の単語に対応する名前付きベクトル|
56
+
57
+ |...|...|
58
+
59
+
60
+
61
+ ややこしいのですが、名前はwordを構成する6個の要素についているのではないのですね。
62
+
63
+
64
+
65
+ したがって、`names(word)`では品詞名は習得できません。しかし、`names(word[[1]])`とすれば`副詞`と返ってくるはずです。
66
+
67
+
68
+
69
+ ではここで、ちょっといたずらをしてみます。
70
+
71
+ ```
72
+
73
+ names(word) <- c("fukushi", "doushi", "joshi", "doushi", "joshi", "kandoushi")
74
+
75
+ ```
76
+
77
+ str(word)を見てみましょう。
78
+
79
+ ```
80
+
81
+ List of 6
82
+
83
+ $ fukushi : Named chr "いつも"
84
+
85
+ ..- attr(*, "names")= chr "副詞"
86
+
87
+ $ doushi : Named chr "答え"
88
+
89
+ ..- attr(*, "names")= chr "動詞"
90
+
91
+ $ joshi : Named chr "て"
92
+
93
+ ..- attr(*, "names")= chr "助詞"
94
+
95
+ $ doushi : Named chr "くれ"
96
+
97
+ ..- attr(*, "names")= chr "動詞"
98
+
99
+ $ joshi : Named chr "て"
100
+
101
+ ..- attr(*, "names")= chr "助詞"
102
+
103
+ $ kandoushi: Named chr "ありがとう"
104
+
105
+ ..- attr(*, "names")= chr "感動詞"
106
+
107
+ ```
108
+
109
+
110
+
111
+ 「リストの要素に名前がついている」のと「名前付きベクトルが要素になっている」の違いが分かるのではないでしょうか。