2017-10-29 6 views
2

私はcsvファイル内の単語のPOS-タグリストを持っている各単語の属性:Networkx:ノードを使用してグラフ化するエッジを追加する方法例えば彼のPOSタグで、

[(何を、WP) (作るの、VBZ) (それら、PRP) (DO、VB) (それ、PRP)] 等...

私はノードがTAG(WP、VBZ、PRPになりたい...)と例えば、エッジのリストは、連続した形式でエッジに属します。

[(何を作る) (make (do、it) (do、it)] it ... だから私は重複したノードを削除することができましたが、ノードから出て行くすべての属性を持っています。 私はこれを持っていますfar

答えて

0

zipを使用すると、文章内の連続する単語間の適切なペアを作成することで、これを簡単にすることができます。代わりにadd_edgeも使用します。これにより、ノードが自動的に追加されるためです。 add_edgeの3番目のパラメータには、オブジェクトの一意のエッジを識別するために使用できるkeyパラメータを使用できます。私はあなたの.csvファイルの形式が正確であるか分かりませんので、次の例では(word, POS)のタプルを含むリストとして文を渡しています。お役に立てれば!

from collections import defaultdict 
import networkx as nx 

G = nx.MultiGraph() 

sentence = [ 
    ("what", "WP"), 
    ("makes", "VBZ"), 
    ("them", "PRP"), 
    ("do", "VB"), 
    ("it", "PRP"), 
] 

for pair0, pair1 in zip(sentence[:-1], sentence[1:]): 
    w0, t0 = pair0 
    w1, t1 = pair1 
    edge_key = "{0} {1}".format(w0, w1) 
    G.add_edge(t0, t1, edge_key) 

print(G.nodes)#['WP', 'VBZ', 'PRP', 'VB'] 
print(G.edges)#[('WP', 'VBZ', 'what makes'), ('VBZ', 'PRP', 'makes them'), ('PRP', 'VB', 'them do'), ('PRP', 'VB', 'do it')] 
+0

回答ありがとうございました! –

関連する問題