Ответы пользователя по тегу Алгоритмы
  • Какой алгоритм использовать для детектора активности речи?

    icelaba
    @icelaba
    Знаю и умею всё
    Можете выдернуть готовый из кодеков использующихся для сжатия речи,
    например www.speex.org
    или найти реализацию G.729 en.wikipedia.org/wiki/G.729

    Еще вариант выдернуть из любого спич рекогнишн движка типа sourceforge.net/p/cmusphinx/code/HEAD/tree

    Вобщем копните в эту сторону.
    Ответ написан
    1 комментарий
  • Какой есть алгоритм для автоматической компоновки нескольких изображений в одно?

    icelaba
    @icelaba
    Знаю и умею всё
    В составе imagemagik есть прекрасная утилита montage которая позволяет как угодно объединять картинки,
    примеры использования тут

    Несмотря на кажущуюся простоту - сгенерить можно что угодно, просто объединяя вызовы montage по принципу - вывод одной используется как ввод другой.

    Я для генерации составных картинок использую свой скрипт поверх montage который запускает shell команды, или если задача одноразовая то генерю shell script где внутри все выглядит как то так

    montage ./images/0.jpg[x${HALF_HEIGHT}] ./images/1.jpg[x${HALF_HEIGHT}] ./images/2.jpg[x${HALF_HEIGHT}] -geometry "${THRD_WIDTH}x<" -gravity center -crop ${THRD_WIDTH}x${HALF_HEIGHT}+0+0 -geometry "+${BORDER}+${BORDER}" ./out/4.html
    Ответ написан
  • Что почитать об алгоритмах нормализации слов?

    icelaba
    @icelaba
    Знаю и умею всё
    Для русского языка есть несколько вариантов часть из них только получение базовой формы, часть выдает помимо базовой формы еще и какая это часть речи:
    По пунктам от самого простого к сложному, и я не в курсе работают ли эти инструменты под windows, сам я использую osx и linux

    1) Инструменты стеммеры - stemmer, обрезают слово выдирая из него по некоторым правилам то что они принимают за - окончания, суффиксы, приставки.
    Лично мне очень нравится стеммер для русского языка из пакета https://github.com/NaturalNode/natural
    Тут простой код для понимания как работает стеммер https://github.com/NaturalNode/natural/blob/master...
    Достоинства стеммеров: очень быстрые, подходят для предварительного анализа в 100% случаев
    Недостатки: базовая словоформа периодами весьма далека от реальной базовой словоформы

    ==========================================================
    2) использовать aspell - линуксовый пакет для проверки орфографии
    пример echo ехала криса на велосипеде | aspell -a -d russian --sug-mode=ultra
    вывод:

    + ехать
    & криса 13 6: киса, риса, ириса, краса
    *
    + велосипед

    Достоинства: большой набор словарей, можно добавлять свои, есть suggestion mode - выдает похожие слова на слова написанные с ошибкой и/или отсутствующие в словаре см выше & криса 13 6: киса, риса, ириса, краса
    Недостатки: медленный, не говорит какая часть речи

    ======================================================
    3) Лучший в номинации TreeTagger www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/#Linux

    пример: echo 'баба сеяла горох' | cmd/tree-tagger-russian
    вывод:
    баба Ncfsny
    сеяла Vmis-sfa-e
    горох Ncmsan

    разшифровка записей вида Ncfsny тут corpus.leeds.ac.uk/mocky/msd-ru.html
    то есть помимо того какая это часть речи и базовой словоформы эта штука еще и выдает кучу дополнительной информации - от падежей и до ....
    Достоинства: великолепен!, определяет часть речи даже если не имеет слова в словаре
    Недостатки: части речи то он определяет а вот с базовой словоформой невсегда, приходится использовать в паре с aspell или стеммером. Самый медленный.

    ========================================================
    Есть еще какие то продукты от яндекса https://company.yandex.ru/technologies/mystem/
    я не пользовался.

    Удачи!
    Ответ написан
    Комментировать
  • Как написать алгоритм спирали?

    icelaba
    @icelaba
    Знаю и умею всё
    Заходите сюда
    ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D0%...

    Если спираль устраивает
    записываете r = k*phi
    x = r*cos(phi)
    y = r*sin(phi)

    предположим точек N
    for(i=0;i!=N;++i){
    phi =i*some_const;
    r = k*i;
    x = r*cos(phi)
    y = r*sin(phi)
    draw(x,y, "что вы тут хотите рисовать")
    }
    константы
    k some_const подбираете сами
    Ответ написан
    Комментировать