私は、ホテルの "親"と "phone_search"が格納されたノードからなるグラフを持っています。 このグラフを作成する主な目的は、同様の「phone_search」(再帰的)を持つすべての「parentid」を接続することでした。たとえば、parentid Aにphone_search 1,2がある場合などです。 Bは2,3を有する。 Cは3,4を有する。 Dが5,6、Eが6,7の場合、A、B、Cは1つのクラスタにグループ化され、DとEは別のクラスタにグループ化されます。networkx内のコンポーネントにグループIDを割り当てる
これはnework構築するために私のコードです:私はをやりたい
from pymongo import MongoClient # To import client for MongoDB
import networkx as nx
import pickle
G = nx.Graph()
#Defining variables
hotels = []
phones = []
allResult = []
finalResult = []
#dictNx = {}
# Initializing MongoDB client
client = MongoClient()
# Connection
db = client.hotel
collection = db.hotelData
for post in collection.find():
hotels.append(post)
for hotel in hotels:
try:
phones = hotel["phone_search"].split("|")
for phone in phones:
if phone == '':
pass
else:
G.add_edge(hotel["parentid"],phone)
except:
phones = hotel["phone_search"]
if phone == '':
pass
else:
G.add_edge(hotel["parentid"],phone)
# nx.write_gml(G,"export.gml")
pickle.dump(G, open('/home/justdial/newHotel/graph.txt', 'w'))
を:私はそれらにアクセスできるように、各コンポーネントにグループIDを割り当て、辞書にそれを保存したいです毎回辞書から直接簡単に検索できます。
例:Gid 1には、同じクラスタにあるいくつかのparentidとphone_searchesが含まれます。同様に、Gid 2には別のクラスタのノードなどが含まれます。
もう1つ疑いがあります。グループIDを使用して辞書からノードにアクセスするのは、networkxグラフでbfsを実行するよりも高速ですか?
私はちょうど1つのより多くの問題を抱えていました。グラフには、わかりますように、私は "親"と "phone_search"が混在しています。しかし、 "phone_search"ではなく、 "parentid"だけを辞書に保存したい。それらを区別する1つの方法は、すべての "phone_search"が数字であり、すべての "parentid"が "P" **で始まることです。 – Anubhav
例はありませんが、私は完全に理解していません。しかし、私はそれが別の質問だと信じています。それともこれはまだコンポーネントについてですか? – MERose
ところで、それはそうです。あるコンポーネントでは、一部のノードは親ノードで構成され、一部は電話番号で構成されます。しかし、ノードの値を辞書に格納するときは、文字Pで始まるノードだけを保存したい(これはデータベースでは親ノードであることを示しています)。基本的には、コンポーネントの親ノードをすべて辞書に保存し、phone_searchのノードは保存しません。 – Anubhav