手動下載 Cora 數據集的文件 cora.cites
和 cora.content
后,你可以通過以下步驟將它們加載到 Python 環境中,并使用 PyTorch Geometric 或其他工具進行進一步處理和分析。
數據集文件說明
-
cora.cites: 包含了論文之間的引用關系。每一行表示一條引用關系,格式為
paper_id_cited paper_id_citing
。例如,論文id35 論文id1033 -
cora.content: 包含了論文的特征信息和標簽。每一行表示一個論文,第一個字段是論文的 id,接著的特征字段(可以是文本特征、詞袋表示、節點屬性等),最后一個字段是論文所屬的類別標簽。例如,第一篇論文id 31336,類別 Neural_Networks,中間部分特征字段
對chatgpt生成代碼進行修改運行結果
Number of citation relations: 5429
Number of papers: 2708
Citation relations:
35 1033
35 103482
35 103515
35 1050679
35 1103960
Paper content:
len line_content 1435
line_content[0] 31336
line_content[-1] Neural_Networks
len line_content 1435
line_content[0] 1061127
line_content[-1] Rule_Learning
len line_content 1435
line_content[0] 1106406
line_content[-1] Reinforcement_Learning
len line_content 1435
line_content[0] 13195
line_content[-1] Reinforcement_Learning
len line_content 1435
line_content[0] 37879
line_content[-1] Probabilistic_Methods
import numpy as np# 文件路徑
cites_file = './cora/cora/cora.cites'
content_file = './cora/cora/cora.content'# 讀取引用關系數據
with open(cites_file, 'r') as f:cites_lines = f.readlines()# 讀取論文特征和標簽數據
with open(content_file, 'r') as f:content_lines = f.readlines()# 打印數據示例
print(f'Number of citation relations: {len(cites_lines)}')
print(f'Number of papers: {len(content_lines)}')# 示例:打印前幾行數據
print('Citation relations:')
for line in cites_lines[:5]:print(line.strip())print('Paper content:')
for line in content_lines[:5]:# print(line.strip())line_content = line.strip().split()print(f"len line_content {len(line_content)}")print(f"line_content[0] {line_content[0]}")print(f"line_content[-1] {line_content[-1]}")
- 以下是chatgpt生成的原始代碼
處理步驟
-
加載數據文件:
使用 Python 的文件讀取方法加載數據文件并進行處理。這里我們使用簡單的文件讀取和處理方法示例:
import numpy as np# 文件路徑 cites_file = 'path_to_cora.cites' content_file = 'path_to_cora.content'# 讀取引用關系數據 with open(cites_file, 'r') as f:cites_lines = f.readlines()# 讀取論文特征和標簽數據 with open(content_file, 'r') as f:content_lines = f.readlines()# 打印數據示例 print(f'Number of citation relations: {len(cites_lines)}') print(f'Number of papers: {len(content_lines)}')# 示例:打印前幾行數據 print('Citation relations:') for line in cites_lines[:5]:print(line.strip())print('Paper content:') for line in content_lines[:5]:print(line.strip())
-
解析數據:
根據數據文件的格式,解析每一行數據,構建對應的數據結構。這里的數據結構可以是 Python 的列表、字典或者 Pandas 的 DataFrame,具體取決于后續數據處理和使用的需求。
# 解析引用關系數據 citation_edges = [] for line in cites_lines:parts = line.strip().split()cited = parts[0]citing = parts[1]citation_edges.append((cited, citing))# 解析論文特征和標簽數據 paper_features = [] paper_labels = [] for line in content_lines:parts = line.strip().split()paper_id = parts[0]features = list(map(float, parts[1:-1])) # 讀取特征,假設是數值型特征label = parts[-1]paper_features.append(features)paper_labels.append(label)# 轉換為 NumPy 數組 paper_features = np.array(paper_features, dtype=np.float32) paper_labels = np.array(paper_labels)# 打印解析結果的示例 print(f'Parsed {len(citation_edges)} citation edges') print(f'Parsed {len(paper_features)} papers with features and labels')# 示例:打印前幾條引用關系和論文特征 print('Parsed citation edges:') for edge in citation_edges[:5]:print(edge)print('Parsed paper features and labels:') for i in range(5):print(f'Paper {i + 1}: Features = {paper_features[i]}, Label = {paper_labels[i]}')
最后一部分打印輸出
Parsed 5429 citation edges
Parsed 2708 papers with features and labels
Parsed citation edges:
('35', '1033')
('35', '103482')
('35', '103515')
('35', '1050679')
('35', '1103960')
Parsed paper features and labels:
Paper 1: Features = [0. 0. 0. ... 0. 0. 0.], Label = Neural_Networks
Paper 2: Features = [0. 0. 0. ... 0. 0. 0.], Label = Rule_Learning
Paper 3: Features = [0. 0. 0. ... 0. 0. 0.], Label = Reinforcement_Learning
Paper 4: Features = [0. 0. 0. ... 0. 0. 0.], Label = Reinforcement_Learning
Paper 5: Features = [0. 0. 0. ... 0. 0. 0.], Label = Probabilistic_Methods
-
進一步處理和分析:
接下來,你可以使用加載和解析的數據進行進一步的處理和分析,例如構建圖結構、訓練機器學習模型或進行數據可視化等操作。如果你打算使用 PyTorch Geometric,可以根據需要將數據轉換為 PyTorch 張量或直接使用 PyTorch Geometric 提供的工具類加載數據。
通過這些步驟,你可以有效地加載和處理手動下載的 Cora 數據集文件,并在需要時將其集成到機器學習或圖神經網絡任務中。