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

    @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
    Ответ написан
    Комментировать