ろぎ/Pajek形式データいじりツール
の編集
https://floss-lab.org/pukiwiki/?%E3%82%8D%E3%81%8E/Pajek%E5%BD%A2%E5%BC%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%84%E3%81%98%E3%82%8A%E3%83%84%E3%83%BC%E3%83%AB
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
&size(14){[[../ろぎ>ろぎ]]}; *Pajek形式データいじりツール [#t7060657] 必要なツールがあれば,できるだけ作っていきたいので,コメント欄あたりに書き込むなりしてください. 今のところ,Mailinglist Archive形式のMLログサイトから関係を抽出するプログラム作りたい. #contents ---- #article **mboxからメール送信回数をカウントするプログラム [#e8036a02] > (2007-11-16 (金) 18:22:10)~ ~ &attachref(mbox2mailcount.pl);~ &attachref(mbox2mailcount.bat);~ ~ 入力:~ mbox形式のメールアーカイブ~ ~ 出力:~ mboxに含まれるメールの数~ フォーマット:ファイル名 メール数 ユニークメール送信者数(参加者数)~ ~ 使用法:~ perl mbox2mailcount.pl [filename1, filename2, ...]~ // - Kaffe用に作ったので,他のプロジェクトで使うときは改良しないといけないかも. -- &new{2007-11-16 (金) 18:23:50}; - これはmboxファイルからメール送信数をカウントするプログラム..netからカウントしたい場合は下のほうのcountMailNum.plを使ってください. -- &new{2007-11-16 (金) 18:27:18}; #comment **.net ファイルの整形 [#sb65ca08] > (2007-06-01 (金) 12:24:08)~ ~ &ref(fixNetFile.pl);~ ~ mbox から生成した .net ファイルを修正する ~ 入力:~ 変換したい.netファイル~ ~ 出力:~ 整形済み.netファイル~ ~ 処理内容~ 1. アドレス名とエッジのソート (&renumbering)~ 2. 0エッジの削除 (&remove0arcs)~ 3. 自己ループの削除 (&removeLoops)~ // #comment **2つのネットワークファイルを同一ノード名でマージする [#a64bf2e1] > (2007-05-08 (火) 09:41:35)~ ~ &ref(mergeNetworksByName.pl);~ ~ 入力:~ 2つのネットワークファイル~ ~ 出力:~ .pajファイル(マージ済ネットワーク+パーティション情報)~ パーティションの意味は以下のとおり~ 1:data2.netのみに属する~ 2:data1.netのみに属する~ 3:両方に属する~ 使用法:~ perl mergeNetworksByName.pl data1.net data2.net~ // #comment **.netファイルをノード名でソート [#ccd22a57] > (2007-05-08 (火) 09:32:46)~ ~ 生ファイルの視認性向上のためのツール~ &ref(renumbering.pl);~ ~ 入力:~ 変換したい.netファイル~ ~ 出力:~ ソート済み.netファイル~ ~ // #comment **mbox形式→Pajek形式への変換プログラム(シュリンクデータを元に作成する) [#q5e27a08] > (2007-01-12 (金) 09:41:02)~ ~ 仕様はgRewCluTw.plと同じですが,メールアドレスの新旧対応表を元に生成します.~ ~ &ref(gRewCluTwSr.pl);~ // -シュリンクされたアドレス一覧テキストと,新旧対応テキストが必要です.プログラム中でファイル名を指定します. -- &new{2007-01-12 (金) 09:42:17}; #comment **新旧アドレス対応表を用いて,.netファイルの同一人物をシュリンクする [#k034e546] > (2007-01-12 (金) 07:17:51)~ ~ emailDupShrinker.plを用いて生成された新旧のEmailアドレス対応関係を用いて,シュリンクされた.netファイルを変換する.~ ~ &ref(networkShrinker.pl);~ ~ 入力:~ 変換したい.netファイルと,networkShrinker.plを用いて生成した新旧アドレス対応表~ ~ 出力:~ シュリンクされた.netファイル~ ~ 使用法:~ コマンドラインで、以下のコマンドをたたく(要 Perl 5 以上)~ perl networkShrinker.pl data.net email_translate.txt~ -引数~ --data.net シュリンクしたい.netファイル~ --email_translate.txt アドレス対応表~ // #comment **メールアドレス一覧から,同じ人のアドレスっぽいのを除去する [#ue88168a] > (2007-01-12 (金) 07:13:54)~ ~ プログラム:~ &ref(emailDupShrinker.pl);~ ~ Email一覧から,@以前の文字列が(大文字小文字を無視して)同じであれば同一人物と判断し,最新のアドレスへの変換表を吐き出す.~ ~ 入力:~ Emailアドレス一覧(標準入力)~ ~ 出力:~ 旧-新が対応付けられたemail関係リスト~ ~ 使用法:~ コマンドラインで、以下のコマンドをたたく(要 Perl 5 以上)~ perl emailDupShrinker.pl < email_list.txt~ // #comment **複数の.netファイル→1つの.pajファイルにマージするプログラム [#a373f2f8] > (2006-12-29 (金) 04:51:37)~ ~ プログラム:~ &ref(merge.pl);~ ~ merge.txtの例:~ &ref(merge.txt);~ ~ 時系列で変化を見るためには,複数の.netファイルをPajekで読み込まなければいけませんが,100個とか読み込むのは手間過ぎるので,単一の.pajファイルにすることで一気に読み込むことができます.~ # ただ,マクロとか使うなら,そっちでもできるので,このプログラムの意味があまりなくなります...~ ~ 入力:~ マージしたい複数の.netファイル.merge.txtに順番にファイル名を書いておく.~ 出力ファイル名は,プログラム中の$filenameという変数で指定しておく.~ ~ 出力:~ マージされた.pajファイル.~ // #comment **特定の人物の次数推移を吐き出すプログラム [#ge11d0e4] > (2006-12-29 (金) 04:47:07)~ ~ プログラム:~ &ref(degreecount.pl);~ ~ ノード情報ファイルの例:~ &ref(degreecount.txt);~ ~ 実行例:~ perl degreecount.pl 10~ ノード番号10番の人の次数推移を表示する.~ ~ 入力:~ 引数に,表示したいノードのノード番号を与える.~ degreecount.txtには,推移を見たい期間の.netファイルのリストを書いておく.~ ~ 出力:~ degreecount.txtのファイルそれぞれについて出次数をカウントしたリスト.~ // #comment **入次数,出次数,次数を全ノードについて計算するプログラム [#kc6e3656] > (2006-12-29 (金) 04:40:20)~ ~ プログラム:~ &ref(mailcount.pl);~ ~ 実行例:~ perl mailcount.pl~ ~ 入力:~ プログラム内で,$filenameという変数に,測定したい.net形式ファイルを直接指定する~ ~ 出力:~ countFrom_〜.txt,countTo_〜.txt,countAll_〜.txtの3ファイル.~ それぞれ,全ノードにおける出次数,入次数,次数を多い順にソートして出力する.~ // #comment **メール送信回数カウントプログラム [#j9cb6ceb] > (2006-12-29 (金) 04:31:16)~ ~ プログラム:~ &ref(countMailNum.pl);~ ~ 実行例:~ perl countMailNum.pl sample.net~ ~ 単一の.netファイル内に記述されている,メールの送信回数を合計するプログラム.~ .netファイルは月ごとになってるので,月ごとの推移とかが見れると思う.~ // - これは.netファイルからメール送信数をカウントするプログラム.mboxからカウントしたい場合は上のほうのmbox2mailcount.plを使ってください. -- &new{2007-11-16 (金) 18:25:57}; #comment **mbox形式→Pajek形式への変換プログラム(ノード情報をあらかじめ与えておく用) [#a3228979] > (2006-12-29 (金) 04:26:43)~ ~ プログラム:~ &ref(gRewCluTw.pl);~ ~ allnode.txtの例:~ &ref(allnode.txt);~ ~ 便利なバッチファイル:~ &ref(rMAwCluTw.bat); … 90日窓,30日ごとの.netファイルを吐き出す例~ ~ 入力:~ 引数で与えられたmboxファイル形式のファイル(複数可)~~ あらかじめ,ノード情報をallnode.txtというファイル名でおいておく必要がある(これは,下の単体用変換プログラムで全期間の関係をマージして出力された.net形式から手作業で抽出してください)~ あと,プログラム内の $allnodecountという変数に,ノード数を書いておかないと,ちゃんと動かないです. ~ 出力:~ 上記のファイルをマージして得たレスの関係を,Pajekの.net形式と.clu形式で吐き出す(ファイル名に+3が付加される)~ // #comment **mbox形式→Pajek形式への変換プログラム(単体用) [#x5ff0203] > (2006-12-29 (金) 04:20:22)~ ~ プログラム:~ &ref(getRelationWithCluster.pl);~ ~ 便利なバッチファイル:~ &ref(runMergeAllWithCluster_all.bat); … 全期間をマージして吐き出す例~ &ref(runMergeAllWithCluster.bat); … 90日窓,30日ごとの.netファイルを吐き出す例~ ~ 実行例:~ perl getRelationWithCluster.pl 199503 199504 199505~ ~ 入力:~ 引数で与えられたmboxファイル形式のファイル(複数可)~ ~ 出力:~ 上記のファイルをマージして得たレスの関係を,Pajekの.net形式と.clu形式で吐き出す // #comment **リスト生成の補助プログラム [#sb05438f] > (2006-12-29 (金) 03:06:29)~ ~ &ref(expander.pl);~ ~ [1-5]みたいな値を引数に与えることで,それを展開したリストが吐き出されます.~ ファイル一覧を作るときに,『[1995-2006]年[01-12]月』みたいなのを投げれ~ ば,ファイル名一覧とかがサクサク生成できそうです.~ 投げ方は,こんな感じです.↓~ ~ perl expander.pl [1995-2006]年[01-12]月~ ~ 上記の出力例:~ 1995年01月~ 1995年02月~ 1995年03月~ ・・・~ 1995年12月~ 1996年01月~ 1996年02月~ ・・・~ 2006年12月~ // #comment *コメント [#p2185552] #comment
タイムスタンプを変更しない
&size(14){[[../ろぎ>ろぎ]]}; *Pajek形式データいじりツール [#t7060657] 必要なツールがあれば,できるだけ作っていきたいので,コメント欄あたりに書き込むなりしてください. 今のところ,Mailinglist Archive形式のMLログサイトから関係を抽出するプログラム作りたい. #contents ---- #article **mboxからメール送信回数をカウントするプログラム [#e8036a02] > (2007-11-16 (金) 18:22:10)~ ~ &attachref(mbox2mailcount.pl);~ &attachref(mbox2mailcount.bat);~ ~ 入力:~ mbox形式のメールアーカイブ~ ~ 出力:~ mboxに含まれるメールの数~ フォーマット:ファイル名 メール数 ユニークメール送信者数(参加者数)~ ~ 使用法:~ perl mbox2mailcount.pl [filename1, filename2, ...]~ // - Kaffe用に作ったので,他のプロジェクトで使うときは改良しないといけないかも. -- &new{2007-11-16 (金) 18:23:50}; - これはmboxファイルからメール送信数をカウントするプログラム..netからカウントしたい場合は下のほうのcountMailNum.plを使ってください. -- &new{2007-11-16 (金) 18:27:18}; #comment **.net ファイルの整形 [#sb65ca08] > (2007-06-01 (金) 12:24:08)~ ~ &ref(fixNetFile.pl);~ ~ mbox から生成した .net ファイルを修正する ~ 入力:~ 変換したい.netファイル~ ~ 出力:~ 整形済み.netファイル~ ~ 処理内容~ 1. アドレス名とエッジのソート (&renumbering)~ 2. 0エッジの削除 (&remove0arcs)~ 3. 自己ループの削除 (&removeLoops)~ // #comment **2つのネットワークファイルを同一ノード名でマージする [#a64bf2e1] > (2007-05-08 (火) 09:41:35)~ ~ &ref(mergeNetworksByName.pl);~ ~ 入力:~ 2つのネットワークファイル~ ~ 出力:~ .pajファイル(マージ済ネットワーク+パーティション情報)~ パーティションの意味は以下のとおり~ 1:data2.netのみに属する~ 2:data1.netのみに属する~ 3:両方に属する~ 使用法:~ perl mergeNetworksByName.pl data1.net data2.net~ // #comment **.netファイルをノード名でソート [#ccd22a57] > (2007-05-08 (火) 09:32:46)~ ~ 生ファイルの視認性向上のためのツール~ &ref(renumbering.pl);~ ~ 入力:~ 変換したい.netファイル~ ~ 出力:~ ソート済み.netファイル~ ~ // #comment **mbox形式→Pajek形式への変換プログラム(シュリンクデータを元に作成する) [#q5e27a08] > (2007-01-12 (金) 09:41:02)~ ~ 仕様はgRewCluTw.plと同じですが,メールアドレスの新旧対応表を元に生成します.~ ~ &ref(gRewCluTwSr.pl);~ // -シュリンクされたアドレス一覧テキストと,新旧対応テキストが必要です.プログラム中でファイル名を指定します. -- &new{2007-01-12 (金) 09:42:17}; #comment **新旧アドレス対応表を用いて,.netファイルの同一人物をシュリンクする [#k034e546] > (2007-01-12 (金) 07:17:51)~ ~ emailDupShrinker.plを用いて生成された新旧のEmailアドレス対応関係を用いて,シュリンクされた.netファイルを変換する.~ ~ &ref(networkShrinker.pl);~ ~ 入力:~ 変換したい.netファイルと,networkShrinker.plを用いて生成した新旧アドレス対応表~ ~ 出力:~ シュリンクされた.netファイル~ ~ 使用法:~ コマンドラインで、以下のコマンドをたたく(要 Perl 5 以上)~ perl networkShrinker.pl data.net email_translate.txt~ -引数~ --data.net シュリンクしたい.netファイル~ --email_translate.txt アドレス対応表~ // #comment **メールアドレス一覧から,同じ人のアドレスっぽいのを除去する [#ue88168a] > (2007-01-12 (金) 07:13:54)~ ~ プログラム:~ &ref(emailDupShrinker.pl);~ ~ Email一覧から,@以前の文字列が(大文字小文字を無視して)同じであれば同一人物と判断し,最新のアドレスへの変換表を吐き出す.~ ~ 入力:~ Emailアドレス一覧(標準入力)~ ~ 出力:~ 旧-新が対応付けられたemail関係リスト~ ~ 使用法:~ コマンドラインで、以下のコマンドをたたく(要 Perl 5 以上)~ perl emailDupShrinker.pl < email_list.txt~ // #comment **複数の.netファイル→1つの.pajファイルにマージするプログラム [#a373f2f8] > (2006-12-29 (金) 04:51:37)~ ~ プログラム:~ &ref(merge.pl);~ ~ merge.txtの例:~ &ref(merge.txt);~ ~ 時系列で変化を見るためには,複数の.netファイルをPajekで読み込まなければいけませんが,100個とか読み込むのは手間過ぎるので,単一の.pajファイルにすることで一気に読み込むことができます.~ # ただ,マクロとか使うなら,そっちでもできるので,このプログラムの意味があまりなくなります...~ ~ 入力:~ マージしたい複数の.netファイル.merge.txtに順番にファイル名を書いておく.~ 出力ファイル名は,プログラム中の$filenameという変数で指定しておく.~ ~ 出力:~ マージされた.pajファイル.~ // #comment **特定の人物の次数推移を吐き出すプログラム [#ge11d0e4] > (2006-12-29 (金) 04:47:07)~ ~ プログラム:~ &ref(degreecount.pl);~ ~ ノード情報ファイルの例:~ &ref(degreecount.txt);~ ~ 実行例:~ perl degreecount.pl 10~ ノード番号10番の人の次数推移を表示する.~ ~ 入力:~ 引数に,表示したいノードのノード番号を与える.~ degreecount.txtには,推移を見たい期間の.netファイルのリストを書いておく.~ ~ 出力:~ degreecount.txtのファイルそれぞれについて出次数をカウントしたリスト.~ // #comment **入次数,出次数,次数を全ノードについて計算するプログラム [#kc6e3656] > (2006-12-29 (金) 04:40:20)~ ~ プログラム:~ &ref(mailcount.pl);~ ~ 実行例:~ perl mailcount.pl~ ~ 入力:~ プログラム内で,$filenameという変数に,測定したい.net形式ファイルを直接指定する~ ~ 出力:~ countFrom_〜.txt,countTo_〜.txt,countAll_〜.txtの3ファイル.~ それぞれ,全ノードにおける出次数,入次数,次数を多い順にソートして出力する.~ // #comment **メール送信回数カウントプログラム [#j9cb6ceb] > (2006-12-29 (金) 04:31:16)~ ~ プログラム:~ &ref(countMailNum.pl);~ ~ 実行例:~ perl countMailNum.pl sample.net~ ~ 単一の.netファイル内に記述されている,メールの送信回数を合計するプログラム.~ .netファイルは月ごとになってるので,月ごとの推移とかが見れると思う.~ // - これは.netファイルからメール送信数をカウントするプログラム.mboxからカウントしたい場合は上のほうのmbox2mailcount.plを使ってください. -- &new{2007-11-16 (金) 18:25:57}; #comment **mbox形式→Pajek形式への変換プログラム(ノード情報をあらかじめ与えておく用) [#a3228979] > (2006-12-29 (金) 04:26:43)~ ~ プログラム:~ &ref(gRewCluTw.pl);~ ~ allnode.txtの例:~ &ref(allnode.txt);~ ~ 便利なバッチファイル:~ &ref(rMAwCluTw.bat); … 90日窓,30日ごとの.netファイルを吐き出す例~ ~ 入力:~ 引数で与えられたmboxファイル形式のファイル(複数可)~~ あらかじめ,ノード情報をallnode.txtというファイル名でおいておく必要がある(これは,下の単体用変換プログラムで全期間の関係をマージして出力された.net形式から手作業で抽出してください)~ あと,プログラム内の $allnodecountという変数に,ノード数を書いておかないと,ちゃんと動かないです. ~ 出力:~ 上記のファイルをマージして得たレスの関係を,Pajekの.net形式と.clu形式で吐き出す(ファイル名に+3が付加される)~ // #comment **mbox形式→Pajek形式への変換プログラム(単体用) [#x5ff0203] > (2006-12-29 (金) 04:20:22)~ ~ プログラム:~ &ref(getRelationWithCluster.pl);~ ~ 便利なバッチファイル:~ &ref(runMergeAllWithCluster_all.bat); … 全期間をマージして吐き出す例~ &ref(runMergeAllWithCluster.bat); … 90日窓,30日ごとの.netファイルを吐き出す例~ ~ 実行例:~ perl getRelationWithCluster.pl 199503 199504 199505~ ~ 入力:~ 引数で与えられたmboxファイル形式のファイル(複数可)~ ~ 出力:~ 上記のファイルをマージして得たレスの関係を,Pajekの.net形式と.clu形式で吐き出す // #comment **リスト生成の補助プログラム [#sb05438f] > (2006-12-29 (金) 03:06:29)~ ~ &ref(expander.pl);~ ~ [1-5]みたいな値を引数に与えることで,それを展開したリストが吐き出されます.~ ファイル一覧を作るときに,『[1995-2006]年[01-12]月』みたいなのを投げれ~ ば,ファイル名一覧とかがサクサク生成できそうです.~ 投げ方は,こんな感じです.↓~ ~ perl expander.pl [1995-2006]年[01-12]月~ ~ 上記の出力例:~ 1995年01月~ 1995年02月~ 1995年03月~ ・・・~ 1995年12月~ 1996年01月~ 1996年02月~ ・・・~ 2006年12月~ // #comment *コメント [#p2185552] #comment
テキスト整形のルールを表示する
添付ファイル:
mailcount.pl
4件
[
詳細
]
emailDupShrinker.pl
11件
[
詳細
]
mbox2mailcount.pl
4件
[
詳細
]
allnode.txt
15件
[
詳細
]
runMergeAllWithCluster_all.bat
17件
[
詳細
]
gRewCluTwSr.pl
9件
[
詳細
]
degreecount.pl
9件
[
詳細
]
countMailNum.pl
9件
[
詳細
]
degreecount.txt
17件
[
詳細
]
expander.pl
6件
[
詳細
]
runMergeAllWithCluster.bat
15件
[
詳細
]
fixNetFile.pl
12件
[
詳細
]
mbox2mailcount.bat
2件
[
詳細
]
rMAwCluTw.bat
5件
[
詳細
]
getRelationWithCluster.pl
26件
[
詳細
]
merge.pl
7件
[
詳細
]
gRewCluTw.pl
6件
[
詳細
]
renumbering.pl
[
詳細
]
networkShrinker.pl
10件
[
詳細
]
merge.txt
11件
[
詳細
]
mergeNetworksByName.pl
13件
[
詳細
]