Beispiel #1
0
 def test_gazetteer_feature(self):
     dropall_and_create()
     doc_id, gaz_id = fill_db()
     rb.morpho_doc2(doc_id)
     morpho = db.get_morpho(doc_id)
     print(morpho)
     ner_feature.create_gazetteer_feature(doc_id, gaz_id)
     ner_feature.create_gazetteer_feature(doc_id, gaz_id)
Beispiel #2
0
 def test_gazetteer_feature(self):
     dropall_and_create()
     doc_id, gaz_id = fill_db()
     rb.morpho_doc2(doc_id)
     morpho = db.get_morpho(doc_id)
     print(morpho)
     ner_feature.create_gazetteer_feature(doc_id, gaz_id)
     ner_feature.create_gazetteer_feature(doc_id, gaz_id)
Beispiel #3
0
    def test_ention(self):

        dropall_and_create()

        # Создадим документ
        doc_stripped = 'Как писал Лев Толстой Федору Достоевскому. Алексей и Дмитрий Карамазовы напоминали ему друзей молодости Кузьмы Сергеевича Петрова-Водкина. Помощник Тэтчер Андрей Иванов.'
        my_doc = Document(stripped=doc_stripped, type='article')
        insert(my_doc)

        spans_word = {'Лев':         {'type': 'Имя',      'words': (0, 2, 2)},
                     'Толстой':      {'type': 'Фамилия',  'words': (0, 3, 3)},
                     'Федору':       {'type': 'Имя',      'words': (0, 4, 4)},
                     'Достоевскому': {'type': 'Фамилия',  'words': (0, 5, 5)},
                     'Алексей':      {'type': 'Имя',      'words': (1, 0, 0)},
                     'Дмитрий':      {'type': 'Имя',      'words': (1, 2, 2)},
                     'Карамазовы':   {'type': 'Фамилия',  'words': (1, 3, 3)},
                     'Кузьмы':       {'type': 'Имя',      'words': (1, 8, 8)},
                     'Сергеевича':   {'type': 'Отчество', 'words': (1, 9, 9)},
                     'Петрова':      {'type': 'Фамилия',  'words': (1, 10, 12)},
                     'Тэтчер':       {'type': 'Фамилия',  'words': (2, 1, 1)},
                     'Андрей':       {'type': 'Имя',      'words': (2, 2, 2)},
                     'Иванов':       {'type': 'Фамилия',  'words': (2, 3, 3)}}

        words_info = {(0, 2): [('им', 'ед')],
                     (0, 3):  [('им', 'ед')],
                     (0, 4):  [('дат', 'ед')],
                     (0, 5):  [('дат', 'ед')],
                     (1, 0):  [('им', 'ед')],
                     (1, 2):  [('им', 'ед')],
                     (1, 3):  [('им', 'мн')],
                     (1, 8):  [('род', 'ед'), ('им', 'мн')],
                     (1, 9):  [('вин', 'ед'), ('род', 'ед')],
                     (1, 10): [('вин', 'ед'), ('род', 'ед'), ('им', 'ед')],
                     (1, 12): [('вин', 'ед'), ('род', 'ед'), ('им', 'ед')],
                     (2, 1): [('им', 'ед')],
                     (2, 2): [('им', 'ед')],
                     (2, 3): [('им', 'ед')]}

        # Проведем морфологический анализ
        doc_id = str(my_doc.doc_id)
        rb.morpho_doc2(doc_id)
        morpho = db.get_morpho(doc_id)

        # Сформируем спаны
        spans = []
        for element in morpho:
            word = element.get('text', '')
            span_word = spans_word.get(word)
            if span_word != None:
                spans.append(span_word)

        mention = form_mention_of_span(spans, words_info)
        print(mention)
        turn_list_mention(mention)
        print(mention)
        remove_intersection_list_mention(mention)
        print(mention)
Beispiel #4
0
 def test_lemmas_freq(self):
     # morpho analysis
     dropall_and_create()
     my_doc = Document(stripped='Эти типы стали есть на складе', type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     rb.lemmas_freq_doc2(doc_id)
     lemmas = db.get_lemmas(doc_id)
     self.assertEqual(lemmas['склад'], 1)
Beispiel #5
0
 def test_lemmas_freq(self):
     # morpho analysis
     dropall_and_create()
     my_doc = Document(stripped='Эти типы стали есть на складе',
                       type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     rb.lemmas_freq_doc2(doc_id)
     lemmas = db.get_lemmas(doc_id)
     self.assertEqual(lemmas['склад'], 1)
Beispiel #6
0
 def test_morpho_feature(self):
     dropall_and_create()
     my_doc = Document(
         stripped='Алексей Бочкарев был задержан вечером 8 августа на Манежной площади за плакат, который, по мнению сотрудников полиции, оскорблял Путина.',
         type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     ner_feature.create_morpho_feature(doc_id)
     features = db.get_ner_feature(doc_id)
     print(features[(0, 11, 'morpho')])
     print(len(features[(0, 11, 'morpho')]))
Beispiel #7
0
 def test_embedding_feature(self):
     dropall_and_create()
     my_doc = Document(
         stripped='Алексей Бочкарев был задержан вечером 8 августа на Манежной площади за плакат, который, по мнению сотрудников полиции, оскорблял Путина.',
         type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     ner_feature.create_embedding_feature(doc_id)
     features = db.get_ner_feature(doc_id)
     # print(features)
     self.assertEqual(features[(0, 13, 'embedding')], {'который_APRO': 1})
     self.assertEqual(features[(0, 12, 'embedding')], {',': 1})
Beispiel #8
0
    def test_tomita_person(self):
        dropall_and_create()
        # my_doc = Document(stripped='Алексей Бочкарев был задержан вечером 8 августа на Манежной площади за плакат, который, по мнению сотрудников полиции, оскорблял Путина.', type='article')
        my_doc = Document(stripped=mytext, type='article')
        insert(my_doc)
        doc_id = str(my_doc.doc_id)
        rb.morpho_doc2(doc_id)
        print(db.get_morpho(doc_id))
        for gram in config:
            run_tomita2(gram, str(doc_id))
        ner_feature.print_tomita_result(my_doc, config.keys())

        ner_feature.create_tomita_feature2(doc_id, config.keys())
Beispiel #9
0
 def test_morpho_feature(self):
     dropall_and_create()
     my_doc = Document(
         stripped=
         'Алексей Бочкарев был задержан вечером 8 августа на Манежной площади за плакат, который, по мнению сотрудников полиции, оскорблял Путина.',
         type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     ner_feature.create_morpho_feature(doc_id)
     features = db.get_ner_feature(doc_id)
     print(features[(0, 11, 'morpho')])
     print(len(features[(0, 11, 'morpho')]))
Beispiel #10
0
    def test_tomita_person(self):
        dropall_and_create()
        # my_doc = Document(stripped='Алексей Бочкарев был задержан вечером 8 августа на Манежной площади за плакат, который, по мнению сотрудников полиции, оскорблял Путина.', type='article')
        my_doc = Document(stripped=mytext, type='article')
        insert(my_doc)
        doc_id = str(my_doc.doc_id)
        rb.morpho_doc2(doc_id)
        print(db.get_morpho(doc_id))
        for gram in config:
            run_tomita2(gram, str(doc_id))
        ner_feature.print_tomita_result(my_doc, config.keys())

        ner_feature.create_tomita_feature2(doc_id, config.keys())
Beispiel #11
0
 def test_embedding_feature(self):
     dropall_and_create()
     my_doc = Document(
         stripped=
         'Алексей Бочкарев был задержан вечером 8 августа на Манежной площади за плакат, который, по мнению сотрудников полиции, оскорблял Путина.',
         type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     ner_feature.create_embedding_feature(doc_id)
     features = db.get_ner_feature(doc_id)
     # print(features)
     self.assertEqual(features[(0, 13, 'embedding')], {'который_APRO': 1})
     self.assertEqual(features[(0, 12, 'embedding')], {',': 1})
Beispiel #12
0
 def test_morpho(self):
     # morpho analysis
     dropall_and_create()
     # doc_stripped = 'Эти типы стали есть, на складе. Проголодались! Вот так. "Кладовка" "-" крупнейший складской комплекс'
     doc_stripped = mytext2
     my_doc = Document(stripped=doc_stripped, type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     morpho = db.get_morpho(doc_id)
     print(morpho)
     doc_text = ''
     for element in morpho:
         if rb.is_sentence_end(element) == False:
             doc_text = doc_text + element.get('text', '')
     self.assertEqual(doc_text.replace('\n',''), doc_stripped.replace('\n',''))
Beispiel #13
0
 def test_morpho(self):
     # morpho analysis
     dropall_and_create()
     # doc_stripped = 'Эти типы стали есть, на складе. Проголодались! Вот так. "Кладовка" "-" крупнейший складской комплекс'
     doc_stripped = mytext2
     my_doc = Document(stripped=doc_stripped, type='article')
     insert(my_doc)
     doc_id = str(my_doc.doc_id)
     rb.morpho_doc2(doc_id)
     morpho = db.get_morpho(doc_id)
     print(morpho)
     doc_text = ''
     for element in morpho:
         if rb.is_sentence_end(element) == False:
             doc_text = doc_text + element.get('text', '')
     self.assertEqual(doc_text.replace('\n', ''),
                      doc_stripped.replace('\n', ''))
Beispiel #14
0
def fill_db():

    docs = [
        "Письмо Маши Васе",
        "First документ Пети",  # check processing english word
        "Первое письмо Маши",
        "Второй документ Маши",
        "Первый документ Васи",
        "222 документ Пети",  # check processing numbers
        "Первое письмо Пети",
        "Первое письмо Васи",
        "Первый документ Маши",
        "Письмо Маши Пете"
    ]
    answers = [1, 0, 1, 0, 0, 0, 1, 1, 0, 1]

    tr_set = []

    for doc in docs:
        doc_db = Document(stripped=doc, type='article')
        insert(doc_db)
        tr_set.append(doc_db.doc_id)

    new_rubric = Rubric(name="Маша")
    insert(new_rubric)
    rubric_id = str(new_rubric.rubric_id)

    for i in range(10):
        if answers[i]:
            insert(DocumentRubric(doc_id=str(tr_set[i]), rubric_id=rubric_id))

    for doc_id in tr_set:
        rb.morpho_doc2(str(doc_id))
        rb.lemmas_freq_doc2(str(doc_id))

    set_id = str(db.put_training_set(tr_set))

    return set_id, rubric_id
Beispiel #15
0
def fill_db():

    docs = ["Письмо Маши Васе",
            "First документ Пети",  # check processing english word
            "Первое письмо Маши",
            "Второй документ Маши",
            "Первый документ Васи",
            "222 документ Пети",  # check processing numbers
            "Первое письмо Пети",
            "Первое письмо Васи",
            "Первый документ Маши",
            "Письмо Маши Пете"]
    answers = [1, 0, 1, 0, 0, 0, 1, 1, 0, 1]

    tr_set = []

    for doc in docs:
        doc_db = Document(stripped=doc, type='article')
        insert(doc_db)
        tr_set.append(doc_db.doc_id)

    new_rubric = Rubric(name="Маша")
    insert(new_rubric)
    rubric_id = str(new_rubric.rubric_id)

    for i in range(10):
        if answers[i]:
            insert(DocumentRubric(doc_id=str(tr_set[i]), rubric_id=rubric_id))

    for doc_id in tr_set:
        rb.morpho_doc2(str(doc_id))
        rb.lemmas_freq_doc2(str(doc_id))

    set_id = str(db.put_training_set(tr_set))

    return set_id, rubric_id
Beispiel #16
0
# # маша
# insert(DocumentRubric(doc_id = set[0],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[2],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[3],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[8],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[9],rubric_id = rubrics_id[0]))
# # Первые
# insert(DocumentRubric(doc_id = set[1],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[2],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[4],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[6],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[7],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[8],rubric_id = rubrics_id[1]))
# # Письма
# insert(DocumentRubric(doc_id = set[0],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[2],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[6],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[7],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[9],rubric_id = rubrics_id[2]))

for doc_id in set:
    # print(doc_id)
    rb.morpho_doc2(doc_id)
    rb.lemmas_freq_doc2(doc_id)

rb.idf_object_features_set(set_id)
rb.learning_rubric_model(set_id, rubrics_id[0])

for doc_id in set:
    rb.spot_doc_rubrics2(doc_id, {rubrics_id[0]: None})
Beispiel #17
0
# # маша
# insert(DocumentRubric(doc_id = set[0],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[2],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[3],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[8],rubric_id = rubrics_id[0]))
# insert(DocumentRubric(doc_id = set[9],rubric_id = rubrics_id[0]))
# # Первые
# insert(DocumentRubric(doc_id = set[1],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[2],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[4],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[6],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[7],rubric_id = rubrics_id[1]))
# insert(DocumentRubric(doc_id = set[8],rubric_id = rubrics_id[1]))
# # Письма
# insert(DocumentRubric(doc_id = set[0],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[2],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[6],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[7],rubric_id = rubrics_id[2]))
# insert(DocumentRubric(doc_id = set[9],rubric_id = rubrics_id[2]))

for doc_id in set:
   # print(doc_id)
   rb.morpho_doc2(doc_id)
   rb.lemmas_freq_doc2(doc_id)

rb.idf_object_features_set(set_id)
rb.learning_rubric_model(set_id, rubrics_id[0])

for doc_id in set:
    rb.spot_doc_rubrics2(doc_id, {rubrics_id[0]: None})