[Musashi-devel 19] Re: xt2gml コマンド

アーカイブの一覧に戻る

Takashi Washio washi****@ar*****
2004年 8月 16日 (月) 12:04:47 JST


羽室先生

鷲尾です。
以下、大概理解しました。これはデータの厳密性というか、どこまでをデータに含め、
どこからをユーザーの任意にするかという問題に関わりますね。

下でおっしゃっている解決方法1)なら誰が見てもnode.xtとedge.xtの関係がわかり、
どれがvertexのIDかが記されていますから、データの曖昧性がないわけです。

解決方法2)の現状フォーマットの場合、どの項目を-vertexIDとしてオプション指定
するかで、まるでグラフというかデータの意味が変わってきますね。問題はこれが
好都合なことなのか、それとも不都合なことなのか、だと思います。

同じデータでも、ユーザーの都合で-vertexIDとするキーを柔軟に変えて扱いたい
なら、現状の解決方法2)がいいと思います。しかし、そのような使用があまりないなら、
データ表現の曖昧性を排除する上から解決方法1)が望ましいでしょう。

現状、私達の問題では、解決方法2)のようにユーザーがキーを任意に指定する
ようなデータや使い方は経験したことがないので、解決方法1)が望ましいと思って
います。

羽室先生の場合、どうでしょうか。ユーザーがキーを任意に指定する解決方法2)の
ようなニーズはあるのでしょうか。

鷲尾


>現在、XMLtable→GraphMLの変換コマンドを作っていますが、
>先の3つの質問の続きとして、確認の意味も含めまして意見をいただけたらと思います。
>
>XMLtable→GraphMLでは、vertexとedgeの情報は別々のファイルにあることを前提とします。
>そこで、vertexIDとEdgeのbgnVertexID,endVertexIDをいかにして同一のものと識別するかという点について、化学式と以下のような例とでは少し違いがあるような気
>がしました。
>
>現在こちらで想定しているデータは、例えばアソシエーションルールの結果をGraphMLで表現する場合で、
>以下のようなものです。
>-------
>node.xt
>-------
>ブランド 価格 売上数量
>A        100     20
>B         80     15
>C         60     90
>
>-------
>edge.xt
>-------
>ブランド1 ブランド2 confidence lift
>A          B          0.7         1.0
>B          A          0.6         1.0
>B          C          0.8         2.1
>C          B          0.3         2.1
>C          A          0.5         1.2
>A          C          0.4         1.2
>(confidenceは"directed"、liftは"undirected")
>
>xt2gmlコマンドは8つのパラメータを持ち、上記のファイルをGraphMLに変換すると
>次のようになります(パラメータのキーワードは分かりやすいものに変えています)。
>
>xt2gml -vertexFile node.xt -vertexID ブランド -vertexLabel 価格,売上数量
>       -edgeFile edge.xt -edgeBgnVertexID ブランド1 -edgeEndVertexID ブランド2
>       -edgeUndirectedLabel confidence -edgeUndirectedLabel lift -o result.gml
>    (-vertexLabel, -edgeUndirectedLabel, -edgeUndirectedLabelは省略可)
>注)xt2gmlでは、-kというパラメータを用意しておりまして、複数のグラフ(Graph要素に対応)も変換可能ですが、ここでは簡単のために省いています。
>
>結果は、以下の通りです。
>----------
>result.gml
>----------
>                  :
><Vertex vertexID="1" dimension="3">
>  <VertexLabel field="ブランド" value="A"  />
>  <VertexLabel field="価格"     value="100"/>
>  <VertexLabel field="売上数量" value="20" />
></Vertex>
><Vertex vertexID="2" dimension="3">
>  <VertexLabel field="ブランド" value="B"  />
>  <VertexLabel field="価格"     value="80" />
>  <VertexLabel field="売上数量" value="15" />
></Vertex>
><Vertex vertexID="3" dimension="3">
>  <VertexLabel field="ブランド" value="C"  />
>  <VertexLabel field="価格"     value="60" />
>  <VertexLabel field="売上数量" value="90" />
></Vertex>
>                  :
>                  :
><Edge edgeId="1" edgeType="directed" dimension="1" bgnVertexId="1" endVertexId="2">
>  <EdgeLabel field="confidence" value="0.7" />
></Edge>
><Edge edgeId="2" edgeType="undirected" dimension="1" bgnVertexId="1" endVertexId="2">
>  <EdgeLabel field="lift" value="1.0" />
></Edge>
>                  :
>                  :
>=====================================================================================
>この場合、node.xtにおける「ブランド」はvertexIDとしての役割を担っています。
>ただ、GraphMLではvertexIDはINT型なので、xt2gmlコマンドが内部的にINT番号を振り、「ブランド」はVertexLabelにします。
>
>一方で、以前に送っていただいた化学式は、テーブルで表すと以下のようになると思われます。
>--------
>node2.xt
>--------
>ID atomy
>1  H
>2  H
>3  C
>4  C
>5  H
>6  H
>
>--------
>edge2.xt
>--------
>ID1 ID2 bondtype
>1   3   singlebond
>2   3   singlebond
>3   4   doublebond
>      :
>      :
>
>このデータを現在の仕様のxt2gmlで変換すると、Edgeについては問題ありませんが、Vertexは以下のようになり、
>不必要なVertexLabel(ID)が含まれることになります。
><Vertex vertexID="1" dimension="2">
>  <VertexLabel field="ID" value="1">
>  <VertexLabel field="atomy" value="H">
></Vertex>
>
>この問題の解決法は2つだと思います。
>1) 元データには必ずGraphMLにおけるvertexIDを含める。
>  例えばアソシエーションルールのような例であっても、各vertexにINT番号を以下のように振る。
>  ID ブランド 価格 売上数量
>  1  A        100     20
>  2  B         80     15
>  3  C         60     90
> そして、コマンドパラメータは以下のように変更し、前述のものと同様な結果が得られるように変更する。
> xt2gml -vertexID ID -vertexLabel ブランド,価格,売上数量 -edgeBgnVertexID ID1 -edgeEndVertexID ID2 (その他のパラメータは同じ)
>                   ~~              ~~~~~~~~
>2) vertexIDの問題はさほど大きくないと考え、現状のコマンド仕様を採用する。
>
>方法1)の欠点は、データを用意するユーザにINTのIDを振る手間をかけてしまいます。
>vertexだけでなくedgeの{bgn|end}VertexIDもINTのIDにする必要があります。
>
>以上のようなことを考えながらxt2gmlコマンドを作成中です。
>vertexIDの問題だけでなく、お気づきの点がありましたらご指摘ねがいます。
>
>よろしくお願いします。
>
>----
>Yukinobu Hamuro  hamur****@adm*****
>_______________________________________________
>Musashi-devel mailing list
>Musas****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/musashi-devel





Musashi-devel メーリングリストの案内
アーカイブの一覧に戻る