Предварительно обученные векторы, nlp, word2ve c, вложение слов для определенных topi c? - PullRequest
0 голосов
/ 05 апреля 2020

есть ли какой-либо предварительно обученный вектор только для определенных топи c? например "java", поэтому я хочу, чтобы векторы, связанные с java в файле. значит, если я дам входное наследование, то косинусное сходство покажет мне только полиморфизм и другие связанные вещи! я использую корпус в качестве векторов GoogleNews-vectors-absolute300.bin и Glove. все еще не получаю связанных слов.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Да, вы можете время от времени находить для загрузки предварительно обученные векторы других групп, которые могут лучше охватывать любые проблемные области, на которых они обучались: как более специализированные слова, так и векторы слов, соответствующие значению слова в этом смысле. домен.

Например, векторы-слова GoogleNews были обучены в новостных статьях примерно в 2012 году, поэтому в его векторе для 'Java' могут доминировать истории острова Индоснезия Java так же, как и язык программирования. , И многие другие векторные наборы обучаются на тексте Википедии, где будут преобладать использования в этом конкретном эталонном стиле письма. Но могут быть и другие наборы, которые лучше подчеркивают нужные вам слова.

Тем не менее, лучшим подходом часто является обучение ваших собственных векторов слов из учебного корпуса, который близко соответствует темам / документам, которые вас интересуют. Затем, векторы слова хорошо настроены для вашей предметной области. Пока у вас есть «достаточно» разнообразных примеров слова, используемого в контексте, результирующий вектор, вероятно, будет лучше, чем обобщенные c векторы из чужого корпуса. («Достаточно» не имеет четкого определения, но обычно составляет не менее 5, а в идеале от десятков до сотен репрезентативных, разнообразных применений.)

Давайте рассмотрим пример вашего примера - показать некоторое сходство между идеями «полиморфизма». и «входное наследование». Для этого вам понадобится учебный корпус, в котором обсуждаются эти концепции, в идеале много раз, от многих авторов, во многих проблемных контекстах. (Учебники, онлайн-статьи и страницы переполнения стека могут быть возможными источниками.)

Вам также понадобится стратегия токенизации, которая удастся создать токен из одного слова для концепции из двух слов 'input_inheritance', которая это отдельная задача, и ее можно решить с помощью (1) созданного вручную глоссария из нескольких словосочетаний, которые следует объединить; (2) статистический анализ пар слов, которые, по-видимому, встречаются так часто вместе, их следует объединить; (3) более сложная грамматическая предобработка обнаружения фраз и сущностей.

(Фразы из нескольких слов в наборе GoogleNews были созданы с помощью статистического алгоритма, который также доступен в библиотеке gensim Python как класс Phrases. Но точные параметры, используемые Google, имеют насколько я знаю, не было выявлено. И для хороших результатов этого алгоритма может потребоваться много данных и настроек, и все же приводить к некоторым комбинациям, которые человек посчитал бы бессмыслицей, и пропустить другие, которые человек посчитал бы естественным.)

0 голосов
/ 06 апреля 2020

Не уверен, что понимаю ваш вопрос / формулировку проблемы, но если вы хотите работать с корпусом исходного кода java, вы можете использовать code2ve c, который обеспечивает предварительно обученные вложения слов моделей. Проверьте это: https://code2vec.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...