Классификация английских слов на редкие и распространенные - PullRequest
4 голосов
/ 09 июля 2009

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

Количество слов, которые я хотел бы классифицировать, ограничено - в настоящее время составляет около 10 000 и включает в себя все, начиная от статей и заканчивая собственными существительными, которые можно заимствовать из других языков (и, таким образом, классифицировать как «редкие»). Я провел некоторый частотный анализ внутри корпуса, и у меня есть распределение этих слов (от 1 использования до 100 вершин).

Моя интуиция для такой системы состояла в том, чтобы использовать списки слов (такие как корпус частоты слова BNC, сеть слов, частота внутреннего корпуса) и назначать веса для его появления в одном из них.

Например, слово, имеющее частоту среднего уровня в корпусе (скажем, 50), но фигурирующее в списке слов W - может рассматриваться как распространенное, поскольку оно является одним из наиболее распространенных во всем языке. Мой вопрос был - каков наилучший способ создать взвешенную оценку для чего-то подобного? Должен ли я идти дискретно или непрерывно? В любом случае, какая система классификации подойдет для этого лучше всего?

Или вы рекомендуете альтернативный метод?

Спасибо!


EDIT:

Чтобы ответить на вопрос Винко о предполагаемом использовании классификации -

Эти слова являются токенизированными из фразы (например, название книги) - и цель состоит в том, чтобы выяснить стратегию генерации строки поискового запроса для фразы, поиска в текстовом корпусе. Строка запроса может поддерживать несколько параметров, таких как близость и т. Д., Поэтому, если слово является общим, эти параметры можно настроить.

Чтобы ответить на вопрос Игоря -

(1) Насколько велик ваш корпус? В настоящее время список ограничен 10 000 токенов, но это всего лишь тренировочный набор. Когда я начну тестировать его на тестовом наборе, он может возрасти до нескольких сотен тысяч.

2) У вас есть ожидаемая доля общих / редких слов в корпусе? Хм, нет.

Ответы [ 3 ]

2 голосов
/ 09 июля 2009

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

Скажем, у вас есть корпус и K внешних списков слов, которые вы можете использовать. Выберите N частотных порогов. Например, у вас может быть 10 порогов: 0,1%, 0,2%, ..., 1,0%. Для вашего корпуса и каждого из внешних списков слов создайте N «экспертов», по одному эксперту на порог для каждого списка слов / корпуса, всего N * (K + 1) экспертов. Каждый эксперт является слабым классификатором с очень простым правилом: если частота слова выше его порога, они считают это слово «общим». Каждый эксперт имеет вес.

Процесс обучения выглядит следующим образом: присваивайте каждому эксперту вес 1. За каждое слово в вашем корпусе заставьте экспертов голосовать. Суммируйте их голоса: 1 * вес (i) для «общих» голосов и (-1) * вес (i) для «редких» голосов. Если результат положительный, пометьте слово как общее.

Теперь общая идея состоит в том, чтобы оценить классификацию и увеличить вес экспертов, которые были правы, и уменьшить вес экспертов, которые были неправы. Затем повторяйте процесс снова и снова, пока ваша оценка не станет достаточно хорошей.

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

1 голос
/ 12 июля 2009

Ваш дистрибутив, скорее всего, Парето-дистрибутив (расширенный вариант закона Ципфа, как упомянуто выше). Я в шоке, что самое распространенное слово используется только 100 раз - это включает в себя «а» и «the» и подобные слова? У вас должен быть небольшой корпус, если он такой же.

В любом случае вам придется выбрать отсечение для «редких» и «общих». Одним из возможных вариантов является среднее ожидаемое количество появлений (см. Выше вики-статью, чтобы узнать среднее значение). Из-за «толстого хвоста» распределения, довольно небольшое количество слов будет появляться выше среднего - это «общие». Остальные "редки". Это приведет к тому, что гораздо больше слов встречаются редко, чем обычно. Не уверен, что это то, к чему вы стремитесь, но вы можете просто переместить отсечение вверх и вниз, чтобы получить желаемое распределение (скажем, все слова с> 50% ожидаемого значения являются «общими»).

0 голосов
/ 23 июля 2009

Хотя это не ответ на ваш вопрос, вы должны знать, что изобретаете колесо здесь. Эксперты по поиску информации разработали способы взвешивания поисковых слов в соответствии с их частотой. Очень популярный вес - TF-IDF , который использует частоту слова в документе и его частоту в корпусе. TF-IDF также объясняется здесь .

Альтернативный показатель - Okapi BM25 , который использует аналогичные факторы.

См. Также документацию Подобие Lucene о том, как TF-IDF реализован в популярной библиотеке поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...