2013-08-22 5 views
1

У меня есть список имен медикаментов (regular_list) и список новых имен (new_list). Я хочу проверить, присутствуют ли имена в new_list в регулярном списке или нет. что имена new_list могут иметь некоторые опечатки, и я хочу, чтобы это имя считалось совпадением с обычным списком. Я знаю, что с помощью stringdist является решением проблемы, но я нужен алгоритм машинного обученияалгоритм машинного обучения для проверки орфографии

+0

Возможный дубликат [машинное обучение для преодоления ошибок типографии] (http://stackoverflow.com/questions/18329826/machine-learning-to-overcome-typo-errors) –

ответ

0

Как уже упоминался здесь machine learning to overcome typo errors, машинное обучение инструментов слишком много для такой задачи, но простая возможность будет сливаться эти подходы.

С одной стороны, вы можете вычислить edit distance между данным словом x и каждым словарным словом d_i. Additionaly, вы можете TRAING за слово классификаторов

c(d_i, distance(x,d_i)) 

возвращение True (класс 1), если данное расстояние редактирования было изучено, чтобы быть достаточно, чтобы рассмотреть x в missspelled версию d_i. Это может дать вам более общую модель, а не использование машинного обучения, так как у вас могут быть разные пороговые значения для каждого словаря (некоторые слова чаще всего ошибочно написаны, а затем другие), но, очевидно, вам необходимо подготовить обучающий набор в форме (misspelled_word, correct_one) (и добавьте также (correct_one, correct_one).

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

+0

продолжение проблемы выше. В моем регулярном списке базы данных около 150 000 слов, тогда как новый список насчитывает около 350 000 слов. Для вычисления расстояния между двумя элементами потребуется (150 000 * 350 000 запросов). Его работа очень очень медленная. Я могу найти лучший способ. – rohit

+0

Есть десятки способов ускорить процесс. Вы можете создавать различные типы индексирования, которые отсекают части базы данных, для которых расстояние слишком велико, чтобы быть рассмотренным (что может быть сделано в постоянное время, например, хеширование 3-х буквенных префиксов и 3-буквенных суксифов и просмотр только тех, чей префикс или суффикс соответствует perfercly). Для большого поиска вам следует использовать существующие поисковые системы, например, например. lucene http://lucene.apache.org/core/ – lejlot

+0

может быть использована любая база данных для решения этой проблемы. предположим, что я помещаю эти две таблицы как regular_list и новый _list. то через запрос я могу сравнить вышеупомянутое расстояние и позволить базе данных соответственно вернуть решение ???? – rohit

Смежные вопросы