Esempio n. 1
0
def test_analyze_high_index_intersection():
    text = TextHtml(u"Я бы хотел приобрести фронтальные погрузчики!")
    words = map(Sentence, [u'хотел приобрести фронтальные', u'приобрести фронтальные погрузчики'])
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert additional_words != {}
    assert u'' not in additional_words
Esempio n. 2
0
def test_find_words_with_intersections(task, text, new_task):
    words = map(Sentence, task.keys())
    text = TextHtml(text)
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert task == result
    assert new_task == additional_words
Esempio n. 3
0
def test_merge(task, text, new_task):
    words = map(Sentence, task.keys())
    text = TextHtml(text)
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert additional_words == new_task
    assert result == task
Esempio n. 4
0
def test_some_text():
    text = TextHtml(u"""
<h1>Ремонт кофемашин метро Проспект Вернадского</h1>

<title>Ремонт кофемашин у метро Проспект Вернадского вызов мастера на дом в Москве, Сервис Хоум</title>

Компания «СервисХоум» предлагает качественный ремонт кофемашин на дому. Устранение неполадок техники осуществляется оперативно и профессионально.

Заглените в наш интернет<span class="ice-del"> -</span> магазин.

Мы ремонтируем широкий спектр различных кофемашин у метро Проспект Вернадского и выполняем свою работу качественно. Наши специалисты:

приедут по вашему вызову в назначенное время;
произведут качественный ремонт и замену деталей аппарата;
выполнят работы быстро и по выгодной стоимости.
Перед тем как провести ремонт, осуществляется диагностика кофемашин в районе Проспекта Вернадского, и только после нее производится устранение неисправностей. Также специалисты «СервисХоум» проводят профилактические работы, продлевающие срок службы техники надолго.

Обращаясь в «СервисХоум», вы можете быть полностью уверены в том, что наши специалисты выполнят ремонт вашей кофемашины оперативно и профессионально.

Чтобы вызвать специалиста на дом, нужно оставить заявку или позвонить нам по номеру +7 (495) 212 0593.
    """, ignored_tags=[('title', ), ('h1', ), ('h2', ), ('h3', ), ('span', {'class': 'ice-del'})])
    words = map(Sentence, [
        u'[КОФЕМАШИН] [*] [ПРОСПЕКТ]',
        u'проспект вернадского',
        u'вернадского',
        u'интернет магазин'])
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result[u'[КОФЕМАШИН] [*] [ПРОСПЕКТ]'] == 2
    assert result[u'вернадского'] == 1
    assert result[u'интернет магазин'] == 1
    assert u'вернадского' not in additional_words
Esempio n. 5
0
def test_find_words_without_intersection(task, text):
    words = map(Sentence, task.keys())
    text = TextHtml(text)
    mark_with_words(words, text)
    # так как пересечений нет, то и дополненного задания не будет
    result, additional_words = find_words(words, text)
    assert additional_words == {}
    assert result == task
Esempio n. 6
0
def test_html_with_strong():
    text = TextHtml(u"<p>Екарта для Екатеринбурга</p><p>Карту для оплаты проезда.</p>")
    assert len(text.sentences) == 2
    words = map(Sentence, [
        u'карту'
    ])
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result[u'карту'] == 1
Esempio n. 7
0
def test_asterisk_in_exact_word():
    words = map(Sentence, [u'игры [*] разработчика', u'игры'])
    text = TextHtml(u'игры находит, но не игры русского разработчика')
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert additional_words == {}
    assert result[u'игры'] == 1
    assert result[u'игры [*] разработчика'] == 1
    html = u"""<span data-markers="d203f33bb6e9ec9d0238e29d4ccfc97e">игры </span>находит, но не <span data-markers="f350ba1c1103dc72275a99ccc134dc3f inactive-d203f33bb6e9ec9d0238e29d4ccfc97e target-d203f33bb6e9ec9d0238e29d4ccfc97e">игры </span><span data-markers="f350ba1c1103dc72275a99ccc134dc3f target-d203f33bb6e9ec9d0238e29d4ccfc97e">русского </span><span data-markers="f350ba1c1103dc72275a99ccc134dc3f target-d203f33bb6e9ec9d0238e29d4ccfc97e">разработчика</span>"""
    assert text.build_html() == html
Esempio n. 8
0
def test_word_child():
    text = TextHtml(u"Дети наше будующее! Ребёнок не должен оставаться дома один")
    words = map(Sentence, [
        u'[ДЕТИ]',
        u'[РЕБЁНОК]',
    ])
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result[u'[ДЕТИ]'] == 1
    assert result[u'[РЕБЁНОК]'] == 1
Esempio n. 9
0
def test_paragraph_break():
    text = TextHtml(u"""
    <p style="text-indent: 20px;">Дентальная&nbsp;<span data-markers="badef16d17cb3f15a6eae4e11b39ef9b" class="highlightedText">имплантация</span><br>Бескровная&nbsp;<span data-markers="badef16d17cb3f15a6eae4e11b39ef9b" class="highlightedText">имплантация</span><br>Лазерная&nbsp;<span data-markers="badef16d17cb3f15a6eae4e11b39ef9b" class="highlightedText">имплантация</span><br>Базальная&nbsp;<span data-markers="68d827caec2e46d49ea561212476052f inactive-badef16d17cb3f15a6eae4e11b39ef9b target-f7cf930ddf8a402b1c0d559e97932ad6 target-7bc22675ef51be0fb916f66f8b61013f target-badef16d17cb3f15a6eae4e11b39ef9b target-1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">имплантация</span><br><br></p>
    <p style="text-indent: 20px;"><span data-markers="68d827caec2e46d49ea561212476052f inactive-7bc22675ef51be0fb916f66f8b61013f inactive-badef16d17cb3f15a6eae4e11b39ef9b target-f7cf930ddf8a402b1c0d559e97932ad6 target-7bc22675ef51be0fb916f66f8b61013f target-badef16d17cb3f15a6eae4e11b39ef9b target-1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">Имплантация</span>&nbsp;<span data-markers="68d827caec2e46d49ea561212476052f inactive-1ec1ca7a93460e9f12d8c84116914067 inactive-f7cf930ddf8a402b1c0d559e97932ad6 inactive-7bc22675ef51be0fb916f66f8b61013f target-f7cf930ddf8a402b1c0d559e97932ad6 target-7bc22675ef51be0fb916f66f8b61013f target-badef16d17cb3f15a6eae4e11b39ef9b target-1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">зубов</span>&nbsp;имеет разные технологии. Выбор определяет состояние костной ткани и дёсен пациента; место, где расположен&nbsp;<span data-markers="1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">зуб;</span>&nbsp;количество&nbsp;<span data-markers="inactive-1ec1ca7a93460e9f12d8c84116914067 f7cf930ddf8a402b1c0d559e97932ad6 target-1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">зубов</span>&nbsp;для восстановления; период времени, прошедший с момента потери&nbsp;<span data-markers="1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">зуба.</span>&nbsp;Выбор технологии&nbsp;<span data-markers="7bc22675ef51be0fb916f66f8b61013f inactive-badef16d17cb3f15a6eae4e11b39ef9b inactive-7d63159b48a8683402e56a8fcc4cb772 target-f7cf930ddf8a402b1c0d559e97932ad6 target-7d63159b48a8683402e56a8fcc4cb772 target-badef16d17cb3f15a6eae4e11b39ef9b target-1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">имплантации</span>&nbsp;<span data-markers="inactive-1ec1ca7a93460e9f12d8c84116914067 inactive-f7cf930ddf8a402b1c0d559e97932ad6 7bc22675ef51be0fb916f66f8b61013f target-f7cf930ddf8a402b1c0d559e97932ad6 target-7d63159b48a8683402e56a8fcc4cb772 target-badef16d17cb3f15a6eae4e11b39ef9b target-1ec1ca7a93460e9f12d8c84116914067" class="highlightedText">зубов</span>&nbsp;предварительно осуществляется при первичном осмотре и окончательно — по результатам компьютерной диагностики.</p>
    """)

    task = {u'[имплантация] [*] [зубов]': 0}
    words = map(Sentence, task.keys())
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result == task
Esempio n. 10
0
def test_build_with_markers():
    word = Sentence(u'пластиковые окна')
    text = TextHtml(u'<p>купить пластиковые окна в москве</p>')
    mark_with_words([word], text)
    html = u'<p>купить <span data-markers="inactive-e4ca1dc74c4a889f31a1e24bb690b5c7">пластиковые </span>'\
           u'<span data-markers="inactive-e4ca1dc74c4a889f31a1e24bb690b5c7">окна </span>в москве</p>'
    assert text.build_html() == html

    find_words([word], text)
    html = u'<p>купить <span data-markers="e4ca1dc74c4a889f31a1e24bb690b5c7">пластиковые </span>'\
           u'<span data-markers="e4ca1dc74c4a889f31a1e24bb690b5c7">окна </span>в москве</p>'
    assert text.build_html() == html
    # проверим что множественный билд разметки ничего не сломает(там видоизменяется структура)
    assert text.build_html() == html

    # при повторной проверке уже отмаркированного списка - старые маркировки очищаются
    text = TextHtml(html)
    mark_with_words([word], text)
    find_words([word], text)
    assert text.build_html() == html
Esempio n. 11
0
def test_word_good():
    text = TextHtml(u"""
        А наша компания поможет вам с выбором лучшего санатория или пансионата.
        Рейтинг лучших санаторно-курортных комплексов вы можете увидеть на нашем сайте.
    """)
    words = map(Sentence, [
        u'[ХОРОШИЙ]',
        u'[ЛУЧШИЙ]',
    ])
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result[u'[ХОРОШИЙ]'] == 0
    assert result[u'[ЛУЧШИЙ]'] == 2
Esempio n. 12
0
def test_punctuation_negative():
    words = [Sentence(u'знаки препинания')]
    text = TextHtml(u"""
    <p>знаки-препинания</p>
    <p>знаки. препинания</p>
    <p>знаки! препинания</p>
    <p>знаки? препинания</p>
    <p><span><span>знаки</span></span></p>
    <p><span><span>препинания</span></span></p>
    """)
    task = {u'знаки препинания': 0}
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result == task
Esempio n. 13
0
def test_punctuation_positive():
    words = [Sentence(u'знаки препинания')]
    text = TextHtml(u"""
    <p>знаки – препинания</p>
    <p>знаки, препинания</p>
    <p>знаки: препинания</p>
    <p>знаки (препинания</p>
    <p>знаки; препинания</p>
    <p>знаки "препинания</p>
    """)
    task = {u'знаки препинания': 6}
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result == task
Esempio n. 14
0
def test_html_lists():
    text = u"""
    <p>Виды имплантации зубов:</p>
    <ul>
        <li>Какая то имплантация</li>
        <li>Базальная имплантация</li>
    </ul>
    <p>Имплантация зубов имеет разные технологии.</p>
    """
    text = TextHtml(text)
    task = {u'[имплантация] [*] [зубов]': 0}
    words = map(Sentence, task.keys())
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result == task
Esempio n. 15
0
def test_analyze_asterisk():
    words = [Sentence(u'услуги * квартир')]
    text = TextHtml(u"""
    <li>услуги по ремонту квартир</li>
    <li>услуги отделки для квартир</li>
    <li>услуги по уборке для квартир более 100 кв метров</li>

    <li>услуги для уборки в роскошной квартир</li>
    <li>услуги в квартир</li>
    <li>услуги для квартир</li>
    <li>услуги квартир</li>
    """)
    mark_with_words(words, text)
    result, additional_words = find_words(words, text)
    assert result[u'услуги * квартир'] == 3
Esempio n. 16
0
def test_find_phantom_groups(words, text, phantoms):
    words = map(Sentence, words)
    text = TextHtml(text)
    mark_with_words(words, text)
    _, additional_words = find_words(words, text)
    assert additional_words.keys() == phantoms
Esempio n. 17
0
def test_multiple_words_in_one_sentence():
    text = TextHtml(u"Машина врезалась в припаркованые машины!")
    word = Sentence(u'[машина]')
    mark_with_words([word], text)
    result, _ = find_words([word], text)
    assert result.values()[0] == 2
Esempio n. 18
0
def test_english_titles():
    word = Sentence(u'[бензопила] [husqvarna]')
    text = TextHtml(u'Бензопилы husqvarna - одни из лучших')
    mark_with_words([word], text)
    result, _ = find_words([word], text)
    assert result.values()[0] == 1