Я прощу прощения, но такие публикации больше напоминают БСДМ: что-то взяли, зачем-то куда-то запихали и получили удовольствие. Нет ни постановки задачи, ни результата. Бессмысленные какие-то действия.
Кондракт со своим коллегой перевели Всеобщую декларацию прав человека на 380 языков. Затем, используя специальные алгоритмы, они обучили компьютерную систему распознавать разные языки. И она смогла правильно определить язык в 97 случаях из ста.
— при таком подходе система в любом случае выплюнет какой-нить результат. Почему 380 современных языков, а не 3800 древних???
в общем, выглядит сомнительно…
Спасибо, интересная статья. Пару раз я делал подобные сервисы, причем не только исправления орфографии, но пунктуации и стилистики. Идея была немного другая. Сначала работал Hanspell с хорошо переработанными словарями. Но Hanspell выдает несколько вариантов на слово. А вот вариант выбирается языковой моделью. В пунктуации работал алгоритм, похожий на Symspell. До «продакшн» сервисы не дошли. Проблемы: во-первых, слишком неповоротливы (perfect hash я тогда еще не знал, лет 7 назад это было). Во вторых, проблема неизвестных слов. Если слова нарицательные можно учесть почти все, то имена собственные — открытое множество, растущее почти линейно. А система все рано пытается заменить неизвестное слово на ближайшее. Моделями, даже с хорошим сглаживанием, можно убрать наиболее частотные ошибки, но всех комбинаций модель учесть не может. А точность, которую желает видеть потребитель, должна быть не менее 95%.
Тема архиинтересная, поскольку, уверен, что эмоции рано и поздно станут основой ИИ. Но хотелось бы побольше именно о технологиях, результатах, прогнозах.
умирание языка == умиранию культуры. Напомню, русский язык далеко не первый и не главный в современном мире. Да в принципе, ничего страшного не произойдет, если если его тоже через какое-то время не будет. Для тех, кто на на нем никогда не говорил, разумеется. Да, собсно, и этот спор будет уже бессмыслен.
Ответ в приведенной Вами цитате — глобализация. Чем больше многообразие языков и культур, тем интенсивнее, ярче развивается общество. А когда по телевизору только товарищ киселев, а на компах только виндоуз, — это служит сильным тормозом в желании что либо делать. Отсутствие конкуренции не только в бизнесе, а прежде всего в повседневной жизни, приводит к застойным явлениям с последующими вспышками агрессии.
Один из самых простых и быстрых алгоритмов нечеткого сравнения строк — сим-хеши на н-граммах (буквенных). Точность выставляется порогами.
Можно использовать сравнение семантических классов, полученных из w2v. Работает еще быстрее и очень не затратно по ресурсам.
Основной причиной неприятия нейростей, как я понял из статьи, является то что «денотаты оказываются без чётких границ». Но, как написано ранее, денотаты это именования «лексем с семантическими классами». Как мне кажется, у денотата по сути не может быть четких границ, т.к. он меняется не только диахроничеки и синхронически. То есть это понятие больше психологическое, нежели семиотическое.
Формальные модели, десятками разработанные нашими и зарубежными лингвистами за последние лет 50 не показали себя на практике. Как раз по той причине, что либо они были слишком формализованы, либо требовали невероятно запутанных онтологий.
Но я полностью согласен с постановкой вопроса: нейросети не панацея. Выбор сложности алгоритма зависти от сложности решаемой задачи. И если морфологические или синтаксические задачи хорошо решаются стандартными стат.методами (наивным Байесом, случайными Марковскими полями и пр.; да и даже формальными моделями), то семантика требует более сложных вещей. Это не обязательно могут нейросети, но их скорость и качество оптимизации семантического пространства все-таки лучше, чем обычных стат.методов. И как раз главное их преимущество, что денотат нечеткий, его можно регулировать, варьируя параметры и корректируя обучающую выборку, и что важно — выборку без семантической разметки.
И, пожалуй, еще бы отметил в качестве размышления: не встречал ни одну формальную модель, учитывающую лексические эмоциональные составляющие (эмотивы). Как я понял, те же дискретные и непрерывные денотат-объекты — это либо имеющие плавающую эмотивную составляющую, либо нет (непрерывные). Эмоции «расшатывают» и даже меняют денотат. Неросети, к сожалению, это тоже пока не могут (я не говорю про сентимент-анализ — это на уровне классификации лексики, а не оценки эмоций). Поэтому здесь вопрос поиска алгоритма пока открытый.
Нет, я работаю с русским. Качество зависит от объема обучающей выборки. Вот, например, верх такого класса из w2v на объеме около 10Г:
кроху
дочку
мамочку
дочу
детку
родню
младшую
сестренку
жену
малышку
— растащить по частям речи и можно использовать, все уже в нужной форме. Еще можно попробовать присоединять предлоги к словам. Это увеличит словарь процентов на 20%, но улучшит качество классов.
Вопрос: а зачем использовать нормализацию? W2V прекрасно работает с плоским текстом и выдает хороший результат. Только для обучения потребуется больше материала.
И я бы называл это не «семантически похожие слова», а ассоциативно-семантические. Так более правильно, поскольку в ассоциативный класс входят и антонимы (тут ничего удивительного, как правило, это одна и та же эмотивная шкала).
Примерно половина описанных вами ошибок лечится коррекцией словаря того же hunspell, но вот с фонетическими коррелятами бороться сложно. Интересно, какова скорость работы алгоритма (ибо Левенштейн — не быстрый алгоритм)?
Кстати, могу добавить ссылочку на реализацию DMSoundex.
Все верно. Я бы назвал это не семантической близостью, а ассоциативной (ассоциативно-семантической, ассоциативно-синтаксической). По этому принципу работает не только «понимание», но и распознавание речи, например, модель когорты. Мышление не алгоритмично, потому что не логично в рамках формальной логики. Но дело не только в «первообразах», но и причине их выбора из множества почти одинаковых. Неокортекс отвечает за отработку уже обозначенной доминанты, причина возникновения которой уже где-то в паралимбической области (про это книга Свердлик: Как эмоции влияют на абстрактное мышление ...). Т.е. кора — это необходимое условие мышления, но далеко не достаточное.
Спасибо, с ваши публикации читал, разумеется.
1 — пробовал, но выбрал другой вариант (напишу во второй части), более простой (и более быстрый). А поскольку результат удовлетворил, то на том пока и остановился.
2 — именно это и является главным. Если в вкратце: для нормализации использовал df и дисперсию (или sd — без разницы).
3 — интересная мысль, но это уже будет классификация, наподобие обучения с учителем. А нужна чистая кластеризация: идет поток сообщений по всем популярным источникам (сотни сообщений в секунду), нужно поймать основные кластеры, скажем, за четверть часа…
Алгоритм, действительно, прост и его достаточно описать на словах. Интереснее само получение моделей. Во второй части будут и формулы, картинки и примеры. Возможно, что-то выложу в гит.
И да — как я понимаю — обучал word2vec на наборе текстов и кластеризовал полученные вектора? Было бы интересно получить набор кластеров (ну и вектора word2vec, для которых он составлен, конечно).
Да, обучал на большом объеме текстов, но не кластеризовал, а использовал при обучении параметр "-classes", например:
time $BIN_DIR/word2vec -train $TEXT_DATA -output $CLASSES_DATA -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500
— там уже вшит k-mean.
Как раз не так давно тестировал этот сервис (на новостях bbc & cnn). По моему, он несколько избыточен, т.е. часто показывает не ошибки, в частности, это касается артиклей; иногда пропускает ошибки согласования и множественного числа.
Расскажите лучше об используемых алгоритмах. Например, как быстро их «перенести» на другой язык?
— при таком подходе система в любом случае выплюнет какой-нить результат. Почему 380 современных языков, а не 3800 древних???
в общем, выглядит сомнительно…
Ответ в приведенной Вами цитате — глобализация. Чем больше многообразие языков и культур, тем интенсивнее, ярче развивается общество. А когда по телевизору только товарищ киселев, а на компах только виндоуз, — это служит сильным тормозом в желании что либо делать. Отсутствие конкуренции не только в бизнесе, а прежде всего в повседневной жизни, приводит к застойным явлениям с последующими вспышками агрессии.
Можно использовать сравнение семантических классов, полученных из w2v. Работает еще быстрее и очень не затратно по ресурсам.
Основной причиной неприятия нейростей, как я понял из статьи, является то что «денотаты оказываются без чётких границ». Но, как написано ранее, денотаты это именования «лексем с семантическими классами». Как мне кажется, у денотата по сути не может быть четких границ, т.к. он меняется не только диахроничеки и синхронически. То есть это понятие больше психологическое, нежели семиотическое.
Формальные модели, десятками разработанные нашими и зарубежными лингвистами за последние лет 50 не показали себя на практике. Как раз по той причине, что либо они были слишком формализованы, либо требовали невероятно запутанных онтологий.
Но я полностью согласен с постановкой вопроса: нейросети не панацея. Выбор сложности алгоритма зависти от сложности решаемой задачи. И если морфологические или синтаксические задачи хорошо решаются стандартными стат.методами (наивным Байесом, случайными Марковскими полями и пр.; да и даже формальными моделями), то семантика требует более сложных вещей. Это не обязательно могут нейросети, но их скорость и качество оптимизации семантического пространства все-таки лучше, чем обычных стат.методов. И как раз главное их преимущество, что денотат нечеткий, его можно регулировать, варьируя параметры и корректируя обучающую выборку, и что важно — выборку без семантической разметки.
И, пожалуй, еще бы отметил в качестве размышления: не встречал ни одну формальную модель, учитывающую лексические эмоциональные составляющие (эмотивы). Как я понял, те же дискретные и непрерывные денотат-объекты — это либо имеющие плавающую эмотивную составляющую, либо нет (непрерывные). Эмоции «расшатывают» и даже меняют денотат. Неросети, к сожалению, это тоже пока не могут (я не говорю про сентимент-анализ — это на уровне классификации лексики, а не оценки эмоций). Поэтому здесь вопрос поиска алгоритма пока открытый.
кроху
дочку
мамочку
дочу
детку
родню
младшую
сестренку
жену
малышку
— растащить по частям речи и можно использовать, все уже в нужной форме. Еще можно попробовать присоединять предлоги к словам. Это увеличит словарь процентов на 20%, но улучшит качество классов.
И я бы называл это не «семантически похожие слова», а ассоциативно-семантические. Так более правильно, поскольку в ассоциативный класс входят и антонимы (тут ничего удивительного, как правило, это одна и та же эмотивная шкала).
Кстати, могу добавить ссылочку на реализацию DMSoundex.
— это принудительно сжать, типа k-mean-ом? Или более хитро?
1 — пробовал, но выбрал другой вариант (напишу во второй части), более простой (и более быстрый). А поскольку результат удовлетворил, то на том пока и остановился.
2 — именно это и является главным. Если в вкратце: для нормализации использовал df и дисперсию (или sd — без разницы).
3 — интересная мысль, но это уже будет классификация, наподобие обучения с учителем. А нужна чистая кластеризация: идет поток сообщений по всем популярным источникам (сотни сообщений в секунду), нужно поймать основные кластеры, скажем, за четверть часа…
Да, обучал на большом объеме текстов, но не кластеризовал, а использовал при обучении параметр "-classes", например:
time $BIN_DIR/word2vec -train $TEXT_DATA -output $CLASSES_DATA -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500
— там уже вшит k-mean.
Расскажите лучше об используемых алгоритмах. Например, как быстро их «перенести» на другой язык?