def _hrchy(DB, classes, src_idx, trg_idx):
from hierarchy import load
def simplex(num_vecs):
from scipy.linalg import svd
cw = np.eye(num_vecs)
cw -= cw.mean(axis=1, keepdims=True)
cw, _, _ = svd(cw)
return cw[:, :num_vecs-1]
hrchy_fn = 'data/%s/wordnet_hierarchy.txt' % DB
hrchy = load(hrchy_fn)
constrains = OrderedDict()
k = 0
for q in hrchy.nodes:
if len(q.fpointer) <= 1:
continue
labs = len(q.fpointer)*np.ones((len(classes)))
for s, cls in enumerate(classes):
if cls in q.name['classes']:
labs[s] = [cls in hrchy[cid].name['classes'] for cid in q.fpointer].index(True)
assigns = np.zeros((len(q.fpointer)+1, len(classes)))
for c in range(len(q.fpointer)+1):
assigns[c, labs == c] = 1
constrains[q.identifier] = {'codewords': simplex(len(q.fpointer)+1).T,
'idxDim': np.arange(k, k+len(q.fpointer)),
'labels': {'source': assigns[:, src_idx],
'target': assigns[:, trg_idx]}}
k += len(q.fpointer)
source_deg = [key for key in constrains.keys() if constrains[key]['labels']['source'].sum(axis=1).max() == len(src_idx)]
[constrains.pop(key) for key in source_deg]
return constrains
dataset_parameters.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录