Слова являются строительными блоками большинства приложений обработки естественного языка (NLP), точно так же, как пиксели для изображений.

Для обработки слов и определения их значения модели машинного обучения требуют, чтобы они были представлены в подходящей форме. Такие методы, как Word2Vec, Glove и т. д., обеспечивают распределенное представление слов. Ключевые вопросы, однако, таковы: (а) Эффективны ли они, когда слова написаны неправильно или сокращены, как мы видим в сообщениях Facebook, твитах и ​​расшифровках чатов? (б) Как они обрабатывают имена собственные, числовые единицы и другие слова, которые не являются частью словаря, используемого приложением? (c) Когда новые слова добавляются или появляются в тексте, как мы последовательно с ними обращаемся?

Когда я создавал свои собственные продукты, я столкнулся с рядом таких ситуаций. Процесс общения в социальных сетях носит неформальный характер, поэтому неформальный текст с аббревиатурами, смайликами и т.п. скорее норма, чем исключение. Поскольку люди ссылаются на несколько имен собственных, необходимо осмысленно обращаться с ними, и нецелесообразно создавать и поддерживать сверхогромный словарный запас, охватывающий все возможные существительные. Предположим, наше приложение имеет дело с продуктами из определенного домена, скажем, с мобильными устройствами. По мере появления новых продуктов и новых функций возникает задача автоматически связать с ними семантическое значение. Например, если нам нужно иметь дело с продуктами iPhone 6 и iPhone 7, как мы собираемся представлять цифры 6 и 7 по-разному, поскольку количество целых чисел бесконечно.

Я разработал метод, позволяющий точно решить эту проблему и проверить, будет ли он полезен другим разработчикам. Я разместил демонстрацию по адресу: http://www.jnresearchlabs.com:9027/. Вы можете ввести свои слова и проверить отображаемые графики. Чтобы не загромождать графики, я ограничил количество отображаемых векторов.

Вы можете получить векторы для своих собственных слов, используя эту технику, представленную в качестве службы API. Хотя система обучается на корпусе конечного словаря, она даст вам правильный вектор для любого слова. Вы можете запустить клиентский код для этой службы, и я предоставил образец. Обратите внимание, что это сделано исключительно как демонстрация новой техники, и API могут быть изменены. Это дает 32-мерный вектор, а также двумерное представление, которое можно использовать для визуализации в двух измерениях.

Эта демонстрация обучается на корпусе, созданном на основе обзоров продуктов мобильных телефонов. Таким образом, точность векторов для слов в этой области, вероятно, будет выше. Например, вы можете заметить, что такие слова, как «apple» и «samsung», тесно связаны друг с другом, так как имеют схожие черты. Но вы можете увидеть, что такие бренды, как Micromax, Lava, отделены от Apple, Samsung, Microsoft, поскольку эти бренды различаются в некоторых основных аспектах. Вы также можете попробовать дать слова с ошибками (например, samsunggg, hiiii, awesooome и т. д.) и посмотреть, насколько они близки к правильно написанным словам.

Большое спасибо за попытку и дать нам ваши драгоценные отзывы, идеи, мысли! Также не пропустите следующие 2 функции, которые я скоро размещу: NeuralDb и ChatBot :)