Какие функции вы будете пытаться извлечь из списка слов для будущего предсказания, это уже существующее слово или просто беспорядок символов?
Там есть описание задачи, которую я там нашел .
Вы должны написать программу, которая может ответить, является ли данное слово английским. Это было бы легко - вам просто нужно поискать слово в словаре - но есть важное ограничение: ваша программа не должна быть больше 64 КиБ.
Поэтому я подумал, что можно было бы использовать логистическую регрессию для решения проблемы. У меня нет большого опыта в области интеллектуального анализа данных, но эта задача мне интересна.
Спасибо.
machine-learning
nlp
text-mining
algorithms
Виталий Мищенко
источник
источник
Ответы:
Во время НЛП и анализа текста можно извлечь несколько разновидностей функций из документа слов, чтобы использовать его для прогнозного моделирования. К ним относятся следующие.
ngrams
Возьмите случайную выборку слов из words.txt . Для каждого слова в образце извлеките все возможные биграммы букв. Например, сила слова состоит из следующих биграмм: { st , tr , re , en , ng , gt , th }. Группируйте по биграммам и вычисляйте частоту каждого биграмма в вашем корпусе. Теперь сделайте то же самое для триграмм, вплоть до n-грамм. На данный момент у вас есть приблизительное представление о распределении частот сочетания римских букв для создания английских слов.
Ngram + словоразделы
Для того, чтобы сделать правильный анализ вероятно , вы должны создать тег для обозначения п-грамм в начале и в конце слова, ( собака -> { ^ д , у , ог , г ^ }) - это позволит вам захватить фонологический / орфографическое ограничения , которые в противном случае могут быть пропущены (например, последовательность нг никогда не может произойти в начале родного английского слова, таким образом , последовательность ^ нг не допускается - одна из причин , почему вьетнамские имена , как Нгуен являются трудно произносить для английского языка) ,
Назовите эту коллекцию граммов word_set . Если вы перевернете сортировку по частоте, ваши наиболее часто встречающиеся граммы будут в верхней части списка - они будут отражать наиболее распространенные последовательности по английским словам. Ниже я покажу некоторые (некрасивый) код с использованием пакета {Ngram} , чтобы извлечь письмо ngrams из слов затем вычислить частоты грамм:
Ваша программа будет просто принять входящую последовательность символов в качестве входных данных, разбить его на грамм , как обсуждалась ранее , и сравнить список лучших грамм. Очевидно , вам придется сократить свою верхний п кирку , чтобы соответствовать требованиям размера программы .
согласные и гласные
Другой возможной особенностью или подходом было бы рассмотрение согласных последовательностей гласных. В основном преобразуйте все слова в согласные строки гласных (например, блин -> CVCCVCV ) и следуйте той же стратегии, которая обсуждалась ранее. Эта программа, вероятно, могла бы быть намного меньше, но пострадала бы от точности, потому что она абстрагирует телефоны в устройства высокого порядка.
NCHAR
Еще одной полезной функцией будет длина строки, так как вероятность появления законных английских слов уменьшается с увеличением количества символов.
Анализ ошибок
Тип ошибок , полученный этого типом машины должен быть бессмысленными словами - слова , которые выглядят , как они должны быть английскими словами , но не (например, ghjrtg будет правильно отклонены (правда отрицательный) , но barkle бы неправильно классифицирована как английское слово (ложный положительный результат)).
Интересно, что zyzzyvas был бы неправильно отклонен (ложно отрицательный), потому что zyzzyvas - это настоящее английское слово (по крайней мере, в соответствии с words.txt ), но его последовательности грамм чрезвычайно редки и, таким образом, вряд ли будут вносить значительную дискриминационную силу.
источник