我正在尝试从包含解析树的文件中学习 PCFG,例如:
(S (DECL_MD (NP_PPSS (PRON_PPSS (ii))) (VERB_MD (pt_verb_md need)) (NP_NN (ADJ_AT (aa)) (NOUN_NN (flight flight)) (PREP_IN (pt_prep_in from))) (AVPNP_NP (NOUN_NP (charlotte charlotte) ))
这是我的相关代码:
def loadData(path):
with open(path ,'r') as f:
data = f.read().split('\n')
return data
def getTreeData(data):
return map(lambda s: tree.Tree.fromstring(s), data)
# Main script
print("loading data..")
data = loadData('C:\\Users\\Rayyan\\Desktop\\MSc Data\\NLP\\parseTrees.txt')
print("generating trees..")
treeData = getTreeData(data)
print("done!")
print("done!")
Run Code Online (Sandbox Code Playgroud)
现在之后我在互联网上尝试了很多东西,例如:
grammar = induce_pcfg(S, productions)
Run Code Online (Sandbox Code Playgroud)
但这里的产品总是内置的功能,例如:
productions = []
for item in treebank.items[:2]:
for tree in treebank.parsed_sents(item):
productions += tree.productions() …Run Code Online (Sandbox Code Playgroud) 今天我们数据结构的老师在学习栈的时候提到了这一点,但是没有给出正确的解释。
stack-overflow programming-languages buffer-overflow data-structures
我遇到的代码未能达到我的期望。详细信息如下:
a = ['name']
b = [('name=cheng',),('name=huang',),('name=pan',)]
Dict = {}
c = []
for i in range(0,3):
for j in range(0,1):
Dict[a[j]] = b[i][j]
c.append(Dict)
print(c)
>>> [{'name':'name=pan'},{'name':'name=pan'},{'name':'name=pan'}]
Run Code Online (Sandbox Code Playgroud)
i应该是什么
>>> [{'name':'name=cheng'},{'name':'name=huang'},{'name':'name=pan'}]
Run Code Online (Sandbox Code Playgroud)
那你能告诉我如何解决这个问题吗?
我有一本带1,000,000键的字典,我想检查字典中是否存在某个键。我也可以1,000,000在一个列表中包含所有这些键的项目。
哪种方式更快,为什么?
例如:
999999 in {x:x for x in range(1000000)}
Run Code Online (Sandbox Code Playgroud)
对比
999999 in [x for x in range(1000000)]
Run Code Online (Sandbox Code Playgroud)