Beispiel #1
0
def select_linkage(sent, num_linkages):
    """
    Поиск наиболее точной структуры предложения
    Аргументы:
    sent - предложение с пометками
    num_linkages - количество вариантов структур предложения
    Возвращаемое значение:
    linkage - структура предложения выданная парсером
    """ 
    ind = 1
    is_good = False
    is_v_or_n = False
    linkage = clg.linkage_create(0, sent, parse_opts)
    for num in range(clg.linkage_get_num_words(linkage)):
        if (clg.linkage_get_word(linkage, num).find(".v") >= 0 or clg.linkage_get_word(linkage, num).find(".n") >= 0):
            is_v_or_n = True
    while (ind < num_linkages and is_good == False):
        for i in range(clg.linkage_get_num_links(linkage)):
            if (clg.linkage_get_link_label(linkage, i).find("W") == 0):
                if (clg.linkage_get_word(linkage, clg.linkage_get_link_rword(linkage, i)).find(".v") >= 0 or clg.linkage_get_word(linkage, clg.linkage_get_link_rword(linkage, i)).find(".n") >= 0):
                    is_good = True
        if (is_good == False and is_v_or_n == True and ind < num_linkages):
            clg.linkage_delete(linkage)
            linkage = clg.linkage_create(ind, sent, parse_opts)
        ind += 1
    return linkage
Beispiel #2
0
def fill_func(linkage, indexes):
    """
    Нахождение слов в структуре предложения по индексам и удаление приписок
    Аргументы:
    linkage - структура предложения выданная парсером
    indexes - индексы слов в предложении
    Возвращаемое значение:
    string - строка слов без приписок
    """ 
    string = ""
    voc = {'main': "", 'atr': []}
    atr = []
    for i in indexes:
        tmp = str(clg.linkage_get_word(linkage, i))
        if (tmp.find("[") > 0):
            ind = tmp.find("[")
        else:
            ind = tmp.find(".")
        mor = morph.parse(tmp[:ind])[0]
        if mor.tag.POS == 'NPRO' or mor.tag.POS == 'PRED' or mor.tag.POS == 'PREP' or mor.tag.POS == 'CONJ' or mor.tag.POS == 'PRCL' or mor.tag.POS == 'INTJ':
            continue
        string = mor.normal_form
        if voc.get('main') == "":
            voc['main'] = string
        else:
            atr.append(string)
    voc['atr'] = atr
    return voc
Beispiel #3
0
 def word(self, i):
     return clg.linkage_get_word(self._obj, i)
Beispiel #4
0
 def word(self, i):
     return clg.linkage_get_word(self._obj, i)