【发布时间】:2019-08-29 21:56:38
【问题描述】:
我想通过根据分配给每个单词的标签将单词分配给节点来为句子创建图表。如果单词是专有名词,它会被分配到主语列表中,如果单词是名词,它将被分配到宾语列表中,如果单词是动词,它将被分配到动词列表中。
我在 Jupyter Notebook 中使用 Python 2.7。
sentence_list=['Arun Mehta drinks milk']
tag_list={'Arun':'NP','Mehta':'NP','drinks':'VF','milk':'NN'}
tag_list_keys = tag_list.keys()
subject_list=[]
object_list=[]
verb_list=[]
def classify(item):
if item in tag_list_keys:
if tag_list[item] == 'NP': subject_list.append(item)
if tag_list[item] == 'NN': object_list.append(item)
if tag_list[item] == 'VF': verb_list.append(item)
def extract(item):
item_split = item.split(' ')
map(classify, item_split)
map(extract, sentence_list)
print('SUBJECT:',subject_list)
print('OBJECT',object_list)
print('VERB',verb_list)
%matplotlib notebook
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
for i in range(3):
G.add_node(object_list[i])
G.add_node(verb_list[i])
G.add_node(subject_list[i])
G.add_edge(verb_list[i],object_list[i])
G.add_edge(subject_list[i],verb_list[i])
nx.draw(G, with_labels= True)
plt.show()
预期输出应具有三个节点,其中一个节点为“Arun Mehta”,第二个节点为“drinks”,第三个节点为“milk”。有人可以建议需要做什么才能在一个节点中获得两个或更多单词吗?
【问题讨论】:
标签: python-2.7 matplotlib jupyter-notebook networkx