Как оценить сборку word2vec по конкретным контекстным файлам
Используя gensim word2vec, построил модель CBOW с кучей судебных файлов для представления слова как вектора в задаче распознавания именованных объектов, но я хочу знать, как оценить мое представление слов. Если я использую какие-либо другие наборы данных, такие как wordsim353(NLTK) или другие онлайн-наборы данных Google, это не сработает, потому что я создал модель, специфичную для моего набора файлов данных домена. Как мне оценить представление векторов слов в word2vec . Я хочу, чтобы слова, относящиеся к аналогичному контексту, были ближе к векторному пространству. Как я могу убедиться, что модель сборки это делает?
Я начал с использования методов, названных нечетным. Например:
model.wv.doesnt_match("breakfast cereal dinner lunch".split()) --> 'cereal'
Я создал свой собственный набор данных (для проверки), используя слова в обучении word2vec . Начал оценивать, взяв три слова аналогичного контекста и нечетное слово вне контекста. Но точность моей модели составляет всего 30 % .
Поможет ли вышеописанный метод в оценке моей модели w2v? Или есть лучший способ?
Я хочу использовать показатель word_s Similarity, но мне нужен эталонный балл (оцениваемый человеком) для оценки моей модели, или есть какие-то методы для этого? Пожалуйста, предложите какие-либо идеи или методы.
1 ответ
В конечном итоге это зависит от цели, которую вы намереваетесь использовать для слов-векторов - ваша оценка должна максимально имитировать конечное использование.
Подход "нечетный выход" может быть разумным. Это часто делается с помощью только двух слов, которые каким-то образом, посредством внешних знаний / категоризации, как известно, связаны (в аспектах, важных для вашего конечного использования), затем третье слово выбирается случайным образом.
Если вы считаете, что ваш оценочный набор, созданный вручную, является высококачественным для ваших целей, но у ваших векторов слов не все в порядке, возможно, у вашего обучения есть и другие проблемы: слишком мало данных, ошибки в предварительной обработке, плохо выбранные метапараметры и т. д.
Вам нужно будет рассмотреть отдельные случаи сбоев более подробно, чтобы выбрать, что улучшить дальше. Например, даже если в одном из ваших тестов "нечетный один" он потерпел неудачу, имеют ли списки наиболее похожих слов для каждого из включенных слов поверхностный смысл в тесте на глазное яблоко? Значительно ли использование большего количества данных или большего количества обучающих итераций улучшает оценку оценки?
Распространенной ошибкой во время обучения и оценки / развертывания является сохранение слишком большого количества редких слов в (ошибочной) интуиции о том, что "больше информации должно быть лучше". На самом деле, слова, встречающиеся только в нескольких случаях, не могут получить очень качественные векторы. (По сравнению с более частыми словами их конечные векторы в большей степени зависят от случайной первоначальной инициализации и от особенностей их нескольких доступных вхождений, а не от их наиболее общего значения.) И, кроме того, их присутствие имеет тенденцию мешать улучшению других близких более частых слов. Затем, если вы включите "длинный хвост" более слабых векторов в свои оценки, они имеют тенденцию несколько произвольно вмешиваться в ранжирование перед общими словами с сильными векторами, скрывая "правильные" ответы на ваши вопросы оценки.
Кроме того, обратите внимание, что абсолютное значение оценки может быть не таким важным, потому что вы просто ищете что-то, что направляет ваши другие оптимизации в правильном направлении для вашей истинной конечной цели. Векторы слов, которые лишь чуть лучше справляются с точными вопросами оценки, могут все еще работать достаточно хорошо в других нечетких контекстах поиска информации.