Ejemplo n.º 1
0
def get_matrix_rstr(mode, dic_json, desc_arg=None):
    texts = [infos["text_line"] for x, infos in dic_json.items()]
    lenmax = mode.split('_')[-1].split(',')[0]
    supportmax = mode.split('_')[-1].split(',')[1]
    rstr = Rstr_max()
    X = []
    for s in texts:
        rstr.add_str(s)
        X.append({})
    r = rstr.go()

    cpt_str = 0
    desc = []
    for (offset_end, nb), (l, start_plage) in r.items():
        ss = rstr.global_suffix[offset_end - l:offset_end]
        list_occur = []
        for o in range(start_plage, start_plage + nb):
            id_text = rstr.idxString[rstr.res[o]]
            list_occur.append(id_text)
        set_occur = set(list_occur)
        # Ici, il y a un souci dans les dimensions puisque tous les descripteurs ne sont pas
        # forcément présents. Donc dans certains cas on n'a rien pour une instance donnée.
        if desc_arg is not None and ss not in desc_arg:  # Test
            continue
        if len(set_occur) > 1:
            if len(ss) < int(lenmax) and len(
                    set_occur) < float(supportmax) * len(texts):
                for id_text in list_occur:
                    X[id_text].setdefault(cpt_str, 0)
                    X[id_text][cpt_str] += 1
                if desc_arg is None:  # corpus train = on ajoute le descripteur
                    desc.append(ss)
                cpt_str += 1

    # Ajout d'une instance virtuelle pour garantir l'homogénéite dans les dimensions des matrices de train et test
    if desc_arg is None:  # Train
        descriptors = desc
    else:  # test
        descriptors = desc_arg
    dic = {}
    for d in descriptors:
        dic[descriptors.index(d)] = 1
    X.append(dic)

    if mode.split('_')[1] == 'rel':
        X = relative_transformation(X)

    return desc, X
Ejemplo n.º 2
0
 def setUp(self):
     self.list_s = self.getString()
     self.rstr = Rstr_max()
     for s in self.list_s:
         self.rstr.add_str(s)
 def setUp(self):
     self.s = self.getString()
     self.rstr = Rstr_max()
     self.rstr.add_str(self.s)