NLTK/NLP создает предметный классификатор «многие ко многим/многометочный»

У меня есть помеченный человеком корпус из более чем 5000 тематических индексированных документов в XML. Они различаются по размеру от нескольких сотен килобайт до нескольких сотен мегабайт. От коротких статей до рукописей. Все они были проиндексированы на уровне абзаца. Мне повезло, что у меня есть такой корпус, и я пытаюсь научить себя некоторым концепциям НЛП. Признаться, я только начал. Пока читал только свободно доступную книгу NLTK, streamhacker и просматривал кулинарную книгу jacobs(?) NLTK. Мне нравится экспериментировать с некоторыми идеями.

Мне было предложено, что, возможно, я мог бы взять биграммы и использовать наивную байесовскую классификацию для маркировки новых документов. Мне кажется, что это неправильный подход. Наивный Байес хорошо разбирается в отношениях истинного/ложного типа, но чтобы использовать его в моем иерархическом наборе тегов, мне нужно было бы создать новый классификатор для каждого тега. Почти 1000 из них. У меня достаточно памяти и мощности процессора для выполнения такой задачи, но я скептически отношусь к результатам. Тем не менее, я сначала попробую этот подход, чтобы удовлетворить чью-то просьбу. Я, вероятно, должен сделать это в течение следующего дня или двух, но я предсказываю, что точность будет низкой.

Так что мой вопрос немного открытый. В основном из-за характера дисциплины и общего незнания моих данных, вероятно, будет трудно дать точный ответ.

  1. Какой тип классификатора подходит для этой задачи. Был ли я не прав, можно ли использовать байесовский алгоритм для более чем истинного/ложного типа операций.

  2. какое извлечение функций я должен выполнить для такой задачи. Я не ожидаю многого от биграмм.

Каждый документ также содержит некоторую информацию для цитирования, включая автора/ов, пол авторов m,f,mix(m&f) и др. (государственный институт и др.), тип документа, дату публикации (с 16 века по настоящее время) , человеческий аналитик и несколько других общих элементов. Я также был бы признателен за некоторые полезные описательные задачи, которые помогут лучше исследовать эти данные на предмет гендерной предвзятости, предвзятости аналитиков и т. Д. Но понимаю, что это немного выходит за рамки этого вопроса.


person matchew    schedule 12.10.2011    source источник
comment
Было бы интересно посмотреть, соотносятся ли нормализованные расстояния сжатия между документами в вашем корпусе с тегами.   -  person Chris Wesseling    schedule 12.10.2011


Ответы (2)


Какой тип классификатора подходит для этой задачи. Был ли я не прав, можно ли использовать байесовский алгоритм для более чем истинного/ложного типа операций.

Вы можете легко создать многоуровневый классификатор с помощью создание отдельного бинарного классификатора для каждого класса, который может отличать этот класс от всех остальных. Классы, для которых соответствующий классификатор дает положительное значение, являются выходными данными комбинированного классификатора. Вы можете использовать наивный байесовский алгоритм для этого или любого другого алгоритма. (Вы также можете пошутить с выводом вероятности NB и пороговым значением, но оценки вероятности NB общеизвестно плохи; только его ранжирование среди них делает его ценным.)

какое извлечение функций я должен выполнить для такой задачи

Известно, что для классификации текста хорошо работают векторы tf-idf, но вы не указали, в чем заключается конкретная задача. Любые метаданные в документах также могут работать; попробуйте провести простой статистический анализ. Если какое-либо свойство данных встречается в одних классах чаще, чем в других, оно может быть полезным.

person Fred Foo    schedule 13.10.2011
comment
Так что прямой задачи у меня нет. Типа ставлю ноги в воду. Что я хотел бы сделать, так это использовать свой человеческий корпус тегов, чтобы посмотреть, смогу ли я автоматизировать тегирование иерархической онтологии на уровне абзаца. - person matchew; 13.10.2011
comment
@matchew: затем используйте любые функции, которые кажутся уместными, попробуйте несколько настроек и оцените их. Нельзя сказать, что важно, не видя данных. - person Fred Foo; 14.10.2011
comment
Спасибо за помощь. Это очень ценится. Я понимаю сложность вопроса, но, возможно, мне следует расширить рамки. Какие типы извлечения признаков можно было бы использовать. Мне нравится tf-idf намного больше, чем биграммы. Но какие другие часто оказываются полезными. Я понимаю, что правильного ответа нет. P.S. Я оставлю этот вопрос открытым еще на несколько дней в надежде стимулировать дальнейшее обсуждение моего вопроса. - person matchew; 15.10.2011
comment
@matchew: Другие параметры для функций документа включают выходные данные из скрытого распределения Дирихле или других моделей обнаружения темы, а также метаданные, такие как автор / название с весами (возможно, изученными), чтобы повысить их по сравнению с самим текстом. Вы также можете рассмотреть возможность выделения/лемматизации текста или преобразования его в пары слово/POS, а не просто в слова. Вы также можете использовать несколько классификаторов для нескольких из этих пространств, но тогда вам нужен способ их объединения. (Использование SVM или MaxEnt вместо NB также может повысить точность классификатора.) - person Fred Foo; 16.10.2011
comment
Большое спасибо за всю информацию. У меня два последних вопроса. 1. Известны ли вам какие-либо ресурсы по НЛП, которые предоставляют хорошо заполненный список рассылки/доску объявлений/канал IRC. Я предвкушаю будущие вопросы, но SO на самом деле не предназначен для моих открытых вопросов и последующих долгих дискуссий. 2. Это немного длинно, поэтому я отвечу в последующем ответе. - person matchew; 16.10.2011
comment
2. Присматриваюсь к модели tfidf и MaxEnt/s. У меня ~900 ярлыков. Я создал набор слов для каждого ярлыка. При расчете tfidf я должен рассматривать каждый BOW (токен, набор меток) как документ N = 900. Или я должен рассматривать свою коллекцию документов как N. Или N должно быть количеством абзацев. Каждый документ помечен для каждого абзаца, поэтому каждый документ имеет отношение «многие ко многим» с метками. Далее при классификации я должен передать новый абзац с каждым словом, имеющим свой tfidf, но потом еще раз. Как я должен концептуализировать это, чтобы прикрепить правильный tfidf? N=BOW? N=документов, N=# пунктов? - person matchew; 16.10.2011
comment
@matchew: (1) metaoptimize.com/qa отвечает на ваши вопросы по машинному обучению; У NLTK есть список рассылки с дружелюбными людьми. (2) Если вы пометили по абзацам и тренируетесь по абзацам, вам следует попытаться применить свой классификатор к абзацам. Однако это усложняет задачу, поэтому вы можете перенести свои метки на уровень документа, если это не сработает. - person Fred Foo; 17.10.2011
comment
Таким образом, представление N/количества документов в виде набора униграмм и меток является неправильным вариантом. Мне нужно, чтобы это был документ/абзац. Таким образом, каждая метка будет иметь несколько tf-idf для некоторых слов? Когда я вычисляю tf-idf для слова, которое я пытаюсь классифицировать, должен ли я увеличивать N? Спасибо за помощь. Я помечаю этот вопрос как ответ сейчас. - person matchew; 17.10.2011
comment
@matchew: это действительно новый вопрос, что-то вроде того, как векторы tf-idf работают для классификации, на который я вряд ли смогу ответить в ограниченном пространстве этого поля для комментариев. - person Fred Foo; 17.10.2011
comment
Я согласен. Я хочу немного поработать над этим вопросом. Я, вероятно, сформулирую новый вопрос сегодня вечером или завтра. Еще раз спасибо за вашу помощь. - person matchew; 17.10.2011

Я так понимаю, что у вас есть две задачи, которые нужно решить здесь. Первый заключается в том, что вы хотите пометить статью на основе ее темы (?), И, таким образом, статья может быть классифицирована более чем по одной категории/классу, и, таким образом, у вас возникает проблема классификации с несколькими метками. Существует несколько алгоритмов, предложенных для решения задачи классификации с несколькими метками — пожалуйста, ознакомьтесь с литературой. Мне очень помог этот документ, когда я имел дело с похожей проблемой: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.104.9401

Вторая проблема, которую вы хотите решить, — это пометить статью авторами, полом, типом документа. Это проблема с несколькими классами — каждый класс имеет более двух потенциальных значений, но все документы имеют некоторые значения для этих классов.

Я думаю, что в качестве первого шага важно понять различия между классификацией с несколькими классами и классификацией с несколькими метками.

person girl    schedule 15.05.2015