def test_basic(self):
        chunk = Chunk([], "Здесь замен нет.", "ADD", "filename", 1)
        self.checker(chunk, None)
        self.assertEqual(0, len(self.checker.get_errors()))

        chunk = Chunk([], "Здeсь есть одна замена.", "ADD", "filename", 1)
        self.checker(chunk, None)
        self.assertEqual(1, len(self.checker.get_errors()))
 def test_regex_matching(self):
     ch = Chunk([], "Онx. yно. оzо", "ADD", "filename", "1")
     r = regex.compile(r'([А-я]*([A-z])[А-я]+|[А-я]+([A-z])[А-я]*)')
     matches = r.findall(ch.get_mod_sents()[0])
     self.assertEqual(3, len(matches))
     self.assertEqual('x', matches[0][2])
     self.assertEqual('y', matches[1][1])
     self.assertEqual('z', matches[2][1])
    def test_lev(self):
        # opts = ChunkOpts(True)
        opts = ChunkOpts()
        chunk = Chunk(
            "Но в нём теперь красовалась большая пробоина, которая требовала немедленного ремонта.",
            "Большими усилиями команды судно удалось вытащить из мели, но в нём теперь красовались большие пробоины, требовавшая немедленного ремонта. ",
            "", "", 1, opts)

        sim = 1.0 - chunk.measure_dist()
        self.assertGreater(0.3, sim)
    def test_lev_reordering(self):
        opts = ChunkOpts(True)
        # opts = ChunkOpts()
        chunk = Chunk(
            "Но в нём теперь красовалась большая пробоина, которая требовала немедленного ремонта.",
            "Большая пробоина, которая требовала немедленного ремонта, в нём теперь красовалась. ",
            "", "", 1, opts)

        sim = 1.0 - chunk.measure_dist()
        self.assertGreater(0.2, sim)
    def test_cos(self):
        opts = ChunkOpts(True)
        chunk = Chunk(
            "Но в нём теперь красовалась большая пробоина, которая требовала немедленного ремонта.",
            "Большими усилиями команды судно удалось вытащить из мели, но в нём теперь красовалась большая пробоина, требовавшая немедленного ремонта. ",
            "", "", 1, opts)

        # print u",".join(chunk.get_mod_tokens())
        sim = ir_utils.cos_sim(ir_utils.gen_ngrams(chunk.get_orig_tokens(), 3),
                               ir_utils.gen_ngrams(chunk.get_mod_tokens(), 3))
        self.assertLess(0.4, sim)
    def test_jac(self):
        opts = ChunkOpts(True)
        # opts = ChunkOpts()
        chunk = Chunk(
            "Но в нём теперь красовалась большая пробоина, которая требовала немедленного ремонта.",
            "Большими усилиями команды судно удалось вытащить из мели, но в нём теперь красовались большие пробоины, требовавшая немедленного ремонта. ",
            "", "", 1, opts)

        sim = ir_utils.jaccard(ir_utils.gen_ngrams(chunk.get_orig_tokens(), 1),
                               ir_utils.gen_ngrams(chunk.get_mod_tokens(), 1))
        self.assertLess(0.4, sim)
    def test_tf(self):
        self.checker._typo_max_tf = 5
        chunk = Chunk("", "Это не ашибка, это не ашибка, это не ашибка", "",
                      "", 1)
        chunk_cpy = Chunk("", "Это не ашибка, это не ашибка, это не ашибка",
                          "CPY", "", 2)

        logging.debug(chunk)
        self.checker(chunk, None)
        self.checker(chunk_cpy, None)
        self.assertEqual(0, len(self.checker.get_errors()))
def test_with_dot_and_space_in_the_end(fs):
    src_dir = '/test/sources/'
    fs.create_dir(src_dir)
    fs.create_file(src_dir + "знакомый.ваш.html")

    checker = chks.SourceDocsChecker(None, src_dir)

    chunk = Chunk("", "", "", "знакомый.ваш.html ", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "знакомый.ваш ", 1)
    checker(chunk, None)
    assert not checker.get_errors()
def test_source_docs_checker_basic(fs):
    src_dir = '/test/sources/'
    fs.create_dir(src_dir)
    fs.create_file(src_dir + "1.html")
    fs.create_file(src_dir + "wiki.html")
    fs.create_file(src_dir + "lenovo")
    fs.create_file(src_dir + "я_рюзский.pdf")

    checker = chks.SourceDocsChecker(None, src_dir)
    chunk = Chunk("", "", "", "1", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "1.html", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "wiki.html", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "wiki", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "lenovo", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "lenovo.html", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "я_рюзский.pdf", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "я_рюзский", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "я_рюзский.txt", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "2.html", 1)
    checker(chunk, None)
    assert len(checker.get_errors()) == 1
    def test_simple(self):
        chunk = Chunk("Text about animals.", "Text - about = animals.",
                      "LPR,ADD", "rvan'", 1)
        self.checker(chunk, None)

        errors = self.checker.get_errors()
        self.assertEqual(1, len(errors))
        self.assertEqual(ErrSeverity.HIGH, errors[0].sev)
 def test_with_typos(self):
     chunk = Chunk("", "я визиал и атправил вам я нарушел", "", "", 1)
     logging.debug(chunk)
     self.checker(chunk, None)
     errors = self.checker.get_errors()
     logging.debug("Errors: %s", "\n".join(str(e) for e in errors))
     self.assertEqual(1, len(errors))
     self.assertEqual(ErrSeverity.HIGH, errors[0].sev)
Example #12
0
    def test_src_stat(self):
        all_chunks = [
            [[Chunk("", "", "ADD", "src1", i) for i in range(0, 20)],
             [Chunk("", "", "DEL", "src2", i) for i in range(0, 15)],
             [Chunk("", "", "DEL", "src3", i) for i in range(0, 4)]],
            [[Chunk("", "", "DEL", "src4", i) for i in range(0, 46)],
             [Chunk("", "", "DEL", "src5", i) for i in range(0, 123)],
             [Chunk("", "", "DEL", "src6", i) for i in range(0, 5)],
             [Chunk("", "", "DEL", "src7", i) for i in range(0, 29)]]
        ]

        collector = SrcStatCollector()
        for chunks in all_chunks:
            collector(itertools.chain(*chunks))

        src_cnt_stat, sents_in_src_stat = collector.get_stat()

        self.assertEqual(2, len(src_cnt_stat))
        self.assertEqual(1, src_cnt_stat[3])
        self.assertEqual(1, src_cnt_stat[4])

        self.assertEqual(5, len(sents_in_src_stat))
        self.assertEqual(2, sents_in_src_stat[0])
        self.assertEqual(1, sents_in_src_stat[1])
        self.assertEqual(2, sents_in_src_stat[2])
        self.assertEqual(1, sents_in_src_stat[4])
        self.assertEqual(1, sents_in_src_stat[10])
    def test_fix_term_in_the_end(self):
        checker = chks.SentCorrectnessChecker(['term_in_the_end'])

        chunk = Chunk("", "Without term   ", "", "", 1)
        checker.fix(chunk)
        self.assertEqual("Without term.", chunk.get_mod_text())

        chunk = Chunk("", ["Without term  ", "wo term"], "", "", 1)
        checker.fix(chunk)
        self.assertEqual("Without term. wo term.", chunk.get_mod_text())

        chunk = Chunk("", ["Boring sent.", "text"], "", "", 1)
        checker.fix(chunk)
        self.assertEqual("Boring sent. text.", chunk.get_mod_text())
    def test_simple2(self):
        chunk = Chunk("Text about animals in the wild.",
                      "Text - about = animals in a wild.", "LPR", "rvan'", 1)
        logging.debug(chunk)
        self.checker(chunk, None)

        errors = self.checker.get_errors()
        self.assertEqual(1, len(errors))
        self.assertEqual(ErrSeverity.NORM, errors[0].sev)
def test_with_wrong_ext(fs):
    src_dir = '/test/sources/'
    fs.create_dir(src_dir)
    fs.create_file(src_dir + "test.hmtl")

    checker = chks.SourceDocsChecker(None, src_dir)

    chunk = Chunk("", "", "", "test.hmtl", 1)
    checker(chunk, None)
    assert not checker.get_errors()
    def test_title_case(self):
        checker = chks.SentCorrectnessChecker(['title_case'])
        chunk = Chunk("", "Корректное предложение!", "", "", 1)
        checker(chunk, None)
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", "Из-за дефиса не работает str.istitle.", "", "", 1)
        checker(chunk, None)
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", '"Цитата: текст"', "", "", 1)
        checker(chunk, None)
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", '2009 number is ok.', "", "", 1)
        checker(chunk, None)
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", "маленькая буква.", "", "", 1)
        checker(chunk, None)
        self.assertEqual(1, len(checker.get_errors()))
    def test_fix(self):
        text = "Ещётакже искуССТвенно содзано биологиеское оржуие (бубоны)."
        chunk = Chunk("", text, "", "", 1)
        text2 = "Нет ошибок"
        chunk2 = Chunk("", text2, "", "", 2)
        #NO fixes for CPY
        text3 = "Выливные и распыливающие авиационные приборы"
        chunk3 = Chunk("", text3, "CPY", "", 1)

        self.checker.fix_all([chunk, chunk2, chunk3])
        self.assertEqual(
            "Ещётакже искусственно создано биологическое оружие (бубоны).",
            chunk.get_mod_text())

        self.assertEqual("Нет ошибок", chunk2.get_mod_text())

        self.assertEqual("Выливные и распыливающие авиационные приборы",
                         chunk3.get_mod_text())
    def test_term_in_the_end(self):
        checker = chks.SentCorrectnessChecker(['term_in_the_end'])
        chunk = Chunk("", "Correct sent with trailing spaces!!!!!  ", "", "",
                      1)
        checker(chunk, None)
        self.assertEqual(1, len(chunk.get_mod_sents()))
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", "Boring sent.", "", "", 1)
        checker(chunk, None)
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", "Question mark?", "", "", 1)
        checker(chunk, None)
        self.assertEqual(0, len(checker.get_errors()))

        chunk = Chunk("", "Without term   ", "", "", 1)
        checker(chunk, None)
        self.assertEqual(1, len(checker.get_errors()))
    def test_fix_title_case(self):
        checker = chks.SentCorrectnessChecker(['title_case'])

        chunk = Chunk("", "маленькая буква.", "", "", 1)
        checker.fix(chunk)
        self.assertEqual("Маленькая буква.", chunk.get_mod_text())

        chunk = Chunk(
            "", ". В основном токсин из организма выводится через почки.", "",
            "", 1)
        checker.fix(chunk)
        self.assertEqual(1, len(chunk.get_mod_sents()))
        self.assertEqual(
            "В основном токсин из организма выводится через почки.",
            chunk.get_mod_text())
def _try_create_chunk(row_vals, sent_num, vals_offs, opts):
    def check_str_cell(cell_val):
        if not isinstance(cell_val, str):
            raise RuntimeError("Sent # %d; Wrong value of the cell: %s"
                               % (sent_num, str(cell_val)))
        return cell_val

    mod_text = row_vals[vals_offs + 0]
    orig_text = check_str_cell(row_vals[vals_offs + 1])
    if not mod_text and not orig_text:
        raise RuntimeError("Row (%s) is empty!" % sent_num)

    return Chunk(mod_text = mod_text,
                 orig_text = orig_text,
                 orig_doc = _get_filename(row_vals[vals_offs + 2]),
                 mod_type_str = check_str_cell(row_vals[vals_offs + 3]),
                 chunk_num = sent_num,
                 opts = opts)
def _try_create_chunk(row_vals, sent_num, opts):
    def check_str_cell(cell_val):
        if not isinstance(cell_val, str):
            raise RuntimeError("Sent # %d; Wrong value of the cell: %s"
                               % (sent_num, str(cell_val)))
        return cell_val


    orig_text = []
    #collect original text
    orig_text_col = 3
    while True:
        try:
            val = row_vals[orig_text_col]
        except IndexError:
            break
        if val:
            orig_text.append(check_str_cell(val))
            orig_text_col+=1
        else:
            break

    mod_text = row_vals[2]
    if not mod_text:
        return None

    orig_doc = _get_filename(row_vals[0])
    mod_type_str = check_str_cell(row_vals[1])

    defined_cols = 0
    defined_cols += bool(orig_doc) + bool(mod_type_str) + bool(orig_text)

    if defined_cols != 0 and defined_cols != 3:
        raise RuntimeError("Неправильный формат!")

    return Chunk(mod_text = mod_text,
                 orig_text = orig_text,
                 orig_doc = orig_doc,
                 mod_type_str = mod_type_str,
                 chunk_num = sent_num,
                 opts = opts)
def test_source_docs_checker_with_whitespace(fs):
    src_dir = '/test/sources/'
    fs.create_dir(src_dir)
    fs.create_file(src_dir + "title kek.html")
    fs.create_file(src_dir + "знакомый ваш.html")
    fs.create_file(src_dir + "kek .html")

    checker = chks.SourceDocsChecker(None, src_dir)

    chunk = Chunk("", "", "", "title kek", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "title kek.html", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "знакомый ваш", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "знакомый ваш", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "знакомый ваш.html", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "kek .html", 1)
    checker(chunk, None)
    assert not checker.get_errors()

    chunk = Chunk("", "", "", "kek ", 1)
    checker(chunk, None)
    assert not checker.get_errors()
Example #23
0
    def test_co_occ(self):
        chunks = [
            Chunk("", "", "ADD,DEL,SYN", "", 1),
            Chunk("", "", "ADD", "", 2),
            Chunk("", "", "ADD,HPR", "", 3),
            Chunk("", "", "ADD,DEL", "", 4),
            Chunk("", "", "SYN,DEL,HPR,LPR", "", 5),
            Chunk("", "", "ADD,DEL,SYN,LPR", "", 6)
        ]
        collector = StatCollector()
        collector(chunks[0:2])
        collector(chunks[2:])
        stat = collector.get_stat()

        self.assertEqual(5, len(stat.mod_type_freqs))
        self.assertEqual(5, stat.mod_type_freqs[ModType.ADD])
        self.assertEqual(3, stat.mod_type_freqs[ModType.SYN])

        self.assertEqual(3, stat.mod_type_co_occur[(ModType.DEL, ModType.ADD)])
        self.assertEqual(3, stat.mod_type_co_occur[(ModType.DEL, ModType.SYN)])
        self.assertEqual(
            2, stat.mod_type_co_occur[(ModType.DEL, ModType.ADD, ModType.SYN)])
        self.assertEqual(
            2, stat.mod_type_co_occur[(ModType.LPR, ModType.DEL, ModType.SYN)])
 def test_eng_with_typos(self):
     chunk = Chunk("", "I failed to wite good english, shame on me!", "",
                   "", 1)
     logging.debug(chunk)
     self.checker(chunk, None)
     self.assertEqual(1, len(self.checker.get_errors()))
 def test_whitelist(self):
     text = "ошибкл, не ашибка."
     chunk = Chunk("", text, "", "", 1)
     checker = chks.SpellChecker(whitelist=["ашибка"])
     checker.fix_all([chunk])
     self.assertEqual("ошибка, не ашибка.", chunk.get_mod_text())
 def test_abbr(self):
     text = "(совр. Гаити)"
     chunk = Chunk("", text, "", "", 1)
     self.checker.fix_all([chunk])
     self.assertEqual("(совр. Гаити)", chunk.get_mod_text())
 def test_wiki(self):
     text = "Уи́льям Си́дни - тонкий"
     chunk = Chunk("", text, "", "", 1)
     self.checker.fix_all([chunk])
     self.assertEqual("Уи́льям Си́дни - тонкий", chunk.get_mod_text())
 def test_missing_orig_sent(self):
     ch = Chunk([], "text", "ADD", "filename", "1")
     avg_orig = ch.get_avg_original_words_cnt()
     self.assertEqual(0.0, avg_orig)
    def test_fix(self):
        chunk = Chunk("", ["искуᏟꓚCСTвенный.", "искуᏟꓚCСTвенный cнeг."], "",
                      "", 1)
        self.checker.fix(chunk)
        self.assertEqual("искуССССТвенный. искуССССТвенный снег.",
                         chunk.get_mod_text())

        # Tор -> first letter is latin
        chunk = Chunk("", "Tор, HTTP-траффик", "", "", 1)
        self.checker.fix(chunk)
        self.assertEqual("Тор, HTTP-траффик", chunk.get_mod_text())

        chunk = Chunk("", "Пpoтoкoл Http; шкoлa - école.", "", "", 1)
        self.checker.fix(chunk)
        self.assertEqual("Протокол Http; школа - école.", chunk.get_mod_text())

        chunk = Chunk("", "Замен нет.", "", "", 1)
        self.checker.fix(chunk)
        self.assertEqual("Замен нет.", chunk.get_mod_text())

        chunk = Chunk("", ["Замен нет.", "Зaмeны есть.", "Замен нет."], "", "",
                      1)
        self.checker.fix(chunk)
        self.assertEqual("Замен нет. Замены есть. Замен нет.",
                         chunk.get_mod_text())
 def test_NOT_fix_numbers(self):
     chunk = Chunk("", "1982г.", "", "", 1)
     self.checker.fix(chunk)
     self.assertEqual("1982г.", chunk.get_mod_text())