毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/8/21【59日目】NetworkXに触れてみる その2

昨日からの続きです。ぶっちゃけて言いますと、NetworkXについて全くわからず書いてています。そのまま続きをやっていきます。

nodeに数値を入れる意味がわからないいまま続けていきます。 ノードには変数も代入できるようです。

H = nx.path_graph(10)
G.add_nodes_from(H)

ちなみにこの時点ではGをprintしても何も起こらないです。

print(G)

それでノードなので、葉を育てる必要(edge)があるみたいです。 edgeはタプルで代入するみたいです。2タプルでも3タプルでもいいみたいです。

G.add_edge(1, 2)
e = (2, 3)
G.add_edge(*e)
G.add_edge(2, 3, {'weight': 3.1415})

ノードとエッジは消すことが可能です。

G.clear()

いま全部消しちゃったので、再度作り直します。

G.add_edges_from([(1, 2), (1, 3)])
G.add_node(1)
G.add_edge(1, 2)
G.add_node("spam")
G.add_edge(3, 'm')

ノードと葉の数はnumber_of_nodes / number_of_edgesメソッドを使えばわかるそうです。

G.number_of_nodes()
5
G.number_of_edges()
3

中身を見たければ、リスト関数で括れば良いそうです。

list(G.nodes)
TypeError: 'method' object is not iterable

エラーが起こりました。チュートリアル通りなのに。

list(G.nodes)
['a', 1, 2, 3, 'spam', 'm', 'p', 's']

おそらくメソッドに()がついていないからだと思います。

list(G.nodes())
[1, 2, 3, 'spam', 'm']

エッジの方も同じです。

list(G.edges())
[(1, 2), (1, 3), (3, 'm')]

このエッジにアクセスするには、添字を指定してあげればいいそうです。

[(1, 2), (1, 3), (3, ‘m’)]に対して、3を指定すると

G[3]
{1: {}, 'm': {}}

1とmが返ってきました。 ‘m’を指定すると

G['m']
{3: {}}

が返ってきます。 2つ指定してあげると、空の要素が返ってきます。

G['m'][3]
{}

ひとまずここまでくれば、図は作れるらしいです。

import matplotlib.pyplot as plt

plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
plt.subplot(122)

謎の図ができました。 f:id:rimt:20180822151337p:plain

今日の結果

今日のAKBメンバーの呟きは49件でした。 f:id:rimt:20180822151954p:plain

{'楽しい': 5, '嬉しい': 4, '怖い': 2, 'いい': 2, 'ない': 2, '短い': 1, '無い': 1, 'くい': 1, '良い': 1, '美味しい': 1, '照れくさい': 1, '切ない': 1, '明るい': 1, '可愛い': 1, 'かわいい': 1
'公演': 21, '今日': 14, '方': 11, '時': 10, 'こと': 8, '久しぶり': 7, '笑': 6, '日': 6, '部': 6, '楽しい': 5, '最後': 5, 'おん': 5, 'アクシュカイ': 5, '嬉しい': 4, 'ツイン': 4, '私': 4, '姉妹': 4, '大好き': 4, '劇場': 4, 'センチメンタルトレイン': 4, '受付': 4,
'する': 24, '公演': 21, '今日': 14, 'くださる': 12, '方': 11, '時': 10, 'こと': 8, '久しぶり': 7, 'てる': 7, '見る': 7, 'なる': 7, '笑': 6, '日': 6, '部': 6, 'れる': 6, 'くる': 6, 'こむ': 6, '楽しい': 5, '最後': 5, 'おん': 5, 'アクシュカイ': 5, '来る': 5, '嬉しい': 4,