Реализация анализатора вопросов для автоматической пометки - PullRequest
2 голосов
/ 16 августа 2010

Какие ресурсы можно использовать для внедрения анализатора вопросов?

Я пытаюсь выяснить, как автоматически помечать вопросы, чтобы пользователям, не имеющим технических знаний, было проще задавать вопросы.Я обнаружил, что с помощью теоремы Байеса я могу достичь этого, но я понятия не имею, как ее реализовать.

Какие-либо библиотеки с открытым исходным кодом или научные статьи по этому вопросу?

Ответы [ 2 ]

3 голосов
/ 17 августа 2010

Наивные байесовские вероятностные классификаторы обычно используются при классификации по текстам. Основная идея состоит в том, чтобы использовать совместные вероятности слов и категорий для оценки вероятностей категорий данного документа. Наивной частью такой модели является предположение о независимости слова. Простота этого предположения делает вычисление наивного байесовского классификатора гораздо более эффективным, чем экспоненциальная сложность не наивных байесовских подходов, поскольку он не использует словосочетание в качестве предикторов. Если задача состоит в том, чтобы классифицировать тестовый документ в один класс, то выбирается класс с наибольшей апостериорной вероятностью.

Вот одна ссылка: [1] Том Митчелл, «Машинное обучение», McGraw-Hill, 1997. (Раздел 6.10)

Если вы принимаете каждую категорию вопросов в качестве текстового типа, вы можете использовать текстовую категоризацию.

Наивный байесовский классификатор основан на теореме Байеса, где вы предполагаете, что все признаки (или атрибут) независимы.

Это очень легко реализовать. Вы можете найти много программного пакета с реализацией. Пакет e1071 в R реализует это. Вот пример кода в R, который использует наивный байесовский классификатор:

<code>
N <- nrow(data)
Ntrain <- round(N*0.7)
data <- data[sample(1:N),]
train <- data[1:Ntrain,]
test <- data[(Ntrain+1):N,]
y<-as.factor(train[,13])
x<-train[,3:12]
y_test <- as.factor(test[,13])
x_test <- test[,3:12]
library(e1071)
m <- naiveBayes(x, y) 
pred_test <- predict(m,x_test, type = "class")
pred <- predict(m,x, type = "class")
1 голос
/ 18 августа 2010

Ваш алгоритм должен поддерживать таблицу (или что-то подобное)

Word            Category
-------------------------------------
algo            algorithm
design          algorithm
...
...
libraries       library
open            open-source
open-source     open-source
paper           research-paper
research        research-paper
source          source-code
...

Когда вы анализируете утверждение согласно этой таблице (после игнорирования слов-заполнителей)

1. "Any open source libraries or research papers on this?"

2. open source libraries research papers

3. 
open            open-source
source          source-code
open-source     open-source
libraries       library
research        research-paper
paper           research-paper
research-paper  research-paper

4. by a simple majority, (you can also use a more complex algorithm here,
   like assigning weights to the Categories)
selected category = research paper

Когда вы продолжаете учиться, используя выбранный алгоритм, ваша таблица постоянно обновляется, и вы продолжаете получать лучшие результаты.

...