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

    @Gabriel_vs
    I'm a Scientist in Data Analysis / programmar.
    База знаний это набор фактов. Фактом может быть утверждение: Москва является столицей России. Факты могут иметь формат RDF триплета:

    _:Москва _:являетсяСтолицей _:Россия

    Данные/триплеты могут быть связные, например:

    _:Россия _:располагаетсяНаМатерике _:Евразия

    и получается уже маленькая База Знаний:

    _:Москва _:являетсяСтолицей _:Россия
    _:Россия _:располагаетсяНаМатерике _:Евразия

    Такие триплеты имеют формат графа. Чем больше триплетов, тем больше База Знаний. Откуда брать такие триплеты или как моделировать это уже другой вопрос. Можно извлечь из других Баз Знаний (dbpedia, freebase, etc). Можно самостоятельно извлекать именованные сущности из не структурированных данных (например СМИ, форумы), но это не тривиальная задача, однако выполнимая.

    Хранить это можно как в текстовых файлах в виде представленных выше триплетах, так и в NoSQL базах данных.

    Семантическая сеть оперирует фактами/триплетами. Найти ответ на вопрос в ней можно следующим образом:

    question = (my_apartment, has, what)
    knowledge = (
            (I, own, my_apartment),
            (my_apartment, has, my_computer),
            (my_apartment, has, my_bed),
            (my_apartment, is_in, Philadelphia)
        )
    for each statement in knowledge {
        if ((statement.subject == question.subject
                or question.subject == what) {
              and (statement.predicate == question.predicate
                or question.predicate == what)
              and (statement.object == question.object
                or question.object == what))
            call FoundAnswer(statement)
        }
    }
    
    Output:
        Answer: my_apartment has my_computer
        Answer: my_apartment has my_bed
    Ответ написан
    Комментировать
  • Какие технологии использовать для больших web-приложений?

    @Gabriel_vs
    I'm a Scientist in Data Analysis / programmar.
    По данному вопросу лучше всего искать/изучать архитектуру систем Facebook, Google, YouTube, etc. Они очень часто выступают с докладами на данные темы.

    Если всё же немного конкретики, то думаю, что необходимыми технологиями является знания в проектировании HighLoad систем (тут можно их доклады с конференций посмотреть), memcache, mapreduce (hadoop например), БД для больших, распределенных, нагруженых данных, хранение данных. Многое из всего этого и Яндекс выкладывает тут. И посмотрите доклады Яндекса со всех YaC'ов.

    Можно посмотреть что в Facebook сделали для переноса php на с++ (транслятор).

    В общем, правильным будет отсылки искать в докладах на конференциях, где большие компании рассказывают о своих проблемах и как они их решали.
    Ответ написан
    Комментировать
  • Какой язык программииования лучше всего учить далее?

    @Gabriel_vs
    I'm a Scientist in Data Analysis / programmar.
    Если предыдущий опыт/знания были в ООП языках,  то можно поизучать языки с полностью противоположной парадигмой -- smalltalk, lisp, haskell.
    Ответ написан
    2 комментария
  • Книги по математике для программистов?

    @Gabriel_vs
    I'm a Scientist in Data Analysis / programmar.
    Читать обо всем подряд в математике будет крайне не продуктивно. Надо отталкиваться от задачи, или хотя бы от направления, в котором придётся заниматься. Математика для разработчика шейдеров или библиотек в компьютерной графике мало пригодится для разработчика в области анализа данных (например в области Информационного поиска). Как писалось выше, действительно правильно было бы направить свои усилия на алгоритмы (не полениться досконально разобраться даже в элементарных алгоритмах). Если есть ощущение, что Кормен или Кнут тяжело идут и есть пробелы (а они наверняка будут), то можно на вооружение взять книгу Ахо, Построение и анализ вычислительных алгоритмов.

    Если всё же привести примеры "Конкретной математики", то программисту в любом случае пригодится хорошее понимание дискретной математики и линейной алгебры.

    Мне, как специалисту в области анализа данных, полезными являются такие пласты математики как мат.статистика, теория вероятности, немного тензорного анализа (но редко), ну и дискретная математика. Если брать по глубже, то и более специфичные знания являются полезными -- теория групп, теория категорий и т.д. Всё очень сильно зависит от задач.

    Если есть желание направить свои силы на изучение математики в области информационного поиска, то можно почитать книгу Маннинга, Введение в информационный поиск. Там множество отсылок к конкретным математическим пластам.

    Но алгоритмы и их хорошее понимание (включая асимптотику) является хорошим примером (началом) изучения математики отталкиваясь от задачи.
    Ответ написан
    Комментировать