Exemple #1
0
 def __init__(self, answers, sample, epsilon):
     self.sample = sample
     self.answers = answers
     self.epsilon = epsilon
     self.id_to_num = {}
     invInd = InvIndex.load(PATH_TO_INV_IND)
     self.num_to_id = {}
     for doc_num, doc_id in enumerate(invInd.doc_ids):
         self.id_to_num[doc_id] = doc_num
         self.num_to_id[doc_num] = doc_id
Exemple #2
0
 def __init__(self, answers, sample, epsilon, fnIdxCodex2Article):
     self.sample = sample
     self.answers = answers
     self.epsilon = epsilon
     self.num_to_ind_dict = {}
     self.ind_to_num_dict = {}
     self.inverse_index = InvIndex.load(fnIdxCodex2Article)
     ind = 0
     for key in list(self.inverse_index.num_tokens_dict.keys()):
         self.ind_to_num_dict[ind] = key
         self.num_to_ind_dict[key] = ind
         ind += 1
Exemple #3
0
 def __init__(self, inv_ind_pickle, bm_25_file):
     self.inv_ind = InvIndex.load(inv_ind_pickle)
     self.inv_in_path = inv_ind_pickle
     self.tfidfs = []
     self.art_names = {}
     self.first_tf_idf = None
     self.corpus = SimpleCorp.load('codexes_tokenized_corp_articles',
                                   f'{PATH_TO_FILES}/corp')
     if not os.path.isfile(bm_25_file):
         self.bm_obj = My_BM(PATH_TO_INV_IND)
         self.bm_obj.save(bm_25_file)
     else:
         self.bm_obj = My_BM.load(bm_25_file)
 def __init__(self, inv_ind_pickle, bm_25_file):
     self.inv_ind = InvIndex.load(inv_ind_pickle)
     self.inv_in_path = inv_ind_pickle
     self.cash = dict()
     self.morph = MorphAnalyzer()
     self.stop_words = stopwords.words("russian")
     self.tfidfs = []
     self.art_names = {}
     self.first_tf_idf = None
     if not os.path.isfile(bm_25_file):
         self.bm_obj = My_BM(PATH_TO_INV_IND)
         self.bm_obj.save(bm_25_file)
     else:
         self.bm_obj = My_BM.load(bm_25_file)
    def __init__(self, inverse_index_pickle):
        self.inverse_index = InvIndex.load(inverse_index_pickle)
        self.corpus = []
        self.ind_to_num_dict = {}
        self.num_to_ind_dict = {}

        ind = 0
        for key in list(self.inverse_index.num_tokens_dict.keys()):
            self.corpus.append(" ".join(
                self.inverse_index.num_tokens_dict[key]))
            self.ind_to_num_dict[ind] = key
            self.num_to_ind_dict[key] = ind
            ind += 1

        self.bm_oject = bm.BM25(self.corpus)
 def __init__(self,
              inverse_index_pickle,
              ngramm=(1, 1),
              norm='l2',
              use_idf=True,
              sublinear_tf=False):
     self.vectorizer = TfidfVectorizer(preprocessor=None,
                                       encoding='utf-8',
                                       ngram_range=ngramm,
                                       norm=norm,
                                       use_idf=use_idf,
                                       sublinear_tf=sublinear_tf)
     self.tfidf_matrix = np.array([])
     self.num_to_num_dict = {}
     self.inverse_index = InvIndex.load(inverse_index_pickle)
Exemple #7
0
# иначе переходим к оценке
if not os.path.exists(PATH_TO_ANS_FILE):
    # функция релевантности
    # features - list признаков для i документа
    def average_func(row):
        r_list = list(row)[1:]
        return sum(r_list) / len(r_list)

    path_to_tf_idf = os.path.join(PATH_TO_TF_IDF, 'tf_idf')
    tokenizer = Tokenizer()

    # создаем массив поисковиков
    searchers_array = []
    for i in range(1, 7):
        searchers_array.append(TFIDF.load(path_to_tf_idf + '_' + str(i)))
    searchers_array.append(InvIndex.load(PATH_TO_INV_IND))

    b_search = Baseline_Search(average_func, searchers_array)

    # готовим массив ответов
    ans_arr = [0] * len(pravoved)

    # заполняем массив
    t = tqdm(total=len(pravoved))
    for i in range(len(pravoved)):
        ans_arr[i] = b_search.search(pravoved[i]['question'],
                                     len(searchers_array[0].doc_ids),
                                     dataFrReturned=False)
        t.update(1)
    t.close()
Exemple #8
0
from tools.relative_paths_to_directories import path_to_directories

PATH_TO_ROOT, PATH_TO_TOOLS, PATH_TO_FILES, PATH_TO_TF_IDF, PATH_TO_INV_IND, PATH_TO_BM_25, \
    PATH_TO_LEARNING_TO_RANK = path_to_directories(os.getcwd())

# Пример того, как можно посчитать и сохранить в файл Обратный индекс

# директория на папку с кодексами
codexes_dir = os.path.join(PATH_TO_ROOT, "codexes")

simple_corp = SimpleCorp.load('codexes_corp_articles', f'{PATH_TO_FILES}/corp')
tokenized_corp = SimpleCorp.load('codexes_tokenized_corp_articles',
                                 f'{PATH_TO_FILES}/corp')

tokenizer = Tokenizer()

inv_index = InvIndex(tokenizer=tokenizer)
inv_index.build_on(tokenized_corp, tokenized=True)
inv_index.save(PATH_TO_INV_IND)

query = 'Симметричные корректировки осуществляются в порядке, установленном настоящей статьей.'
search_result = inv_index.search(query)
found_articles = [(simple_corp.get_doc(doc_id), rel)
                  for doc_id, rel in search_result]
print(search_result)

PATH_TO_IIFH = os.path.join(PATH_TO_FILES, "IIHighlight")
IIFH = InvertIndexForHighlight(tokenizer=tokenizer, corpus=simple_corp)
IIFH.build()
IIFH.save(PATH_TO_IIFH)
Exemple #9
0
def load_tfidf():
    for i in range(1, 7):
        features.append(TFIDF.load(PATH_TO_TFIDF.format(i)))
    features.append(InvIndex.load("files/inv_ind.pickle"))
 def __init__(self, tokenizer, inverse_index_pickle):
     Search.__init__(self, tokenizer)
     self.inverse_index = InvIndex.load(inverse_index_pickle)
     self.cash = self.inverse_index.cash
Exemple #11
0
import tools.tokenize_docs as tokenize_docs
from tools.inverse_index import InvIndex
import os

from tools.relative_paths_to_directories import path_to_directories

PATH_TO_ROOT, PATH_TO_TOOLS, PATH_TO_FILES, PATH_TO_TF_IDF, PATH_TO_INV_IND, PATH_TO_BM_25, \
    PATH_TO_LEARNING_TO_RANK = path_to_directories(os.getcwd())

# Пример того, как можно посчитать и сохранить в файл Обратный индекс

# директория на папку с кодексами
fnCollectionDir = os.path.join(PATH_TO_ROOT, "codexes")

# файл, куда будет сохраняться (или где уже сохранен) объект класса InvIndex
# перед поиском рекомендуется удалять имеющийся файл и считать заново (иначе могут быть проблемы в директориях)
fnIdxCodex2Article = PATH_TO_INV_IND

# если объект уже создан, то строить нет смысла
# иначе строим и сохраняем объект класса InvIndex по директории fnIdxCodex2Article
if not os.path.isfile(fnIdxCodex2Article):
    s = InvIndex(fnCollectionDir, tokenize_docs.Tokenizer(''))
    s.update_dicts('article')
    s.build_inversed_index('article')
    s.num_tokens_dict_builder()
    s.save(fnIdxCodex2Article)