#python-3.x #machine-learning #nlp #gensim #word2vec
#python-3.x #машинное обучение #nlp #gensim #word2vec
Вопрос:
Я не могу заставить работать функцию .most_similar(). Я пробовал обе версии Gensim 3.8.3 и теперь нахожусь на бета-версии 4.0. Я работаю сразу с учебником по модели Word2Vec для каждой версии документации.
Код выдает ошибку и перезапускает мое ядро:
print(wv.most_similar(positive=['car', 'minivan'], topn=5))
Приведенный выше код дословно приведен как в документации 3.8.3, так и в 4.0. Следующие руководства дословно.
Как указано в других ответах на переполнение стека, я пробовал model.wv.most_similar()
Я не думаю, что .most_similar() обесценился.
Кроме того, функция .doesnt_match() не работает.
РЕДАКТИРОВАТЬ в отношении gojomo:
Прямо сейчас я нахожусь на Genism 3.8.3. Я использую модель перчаток и модели Word2Vec, на самом деле только что попробовал, и это сработало с моделью перчаток, возможно, у модели Word2Vec проблемы с памятью, как gojomo предложил мой код ниже:
Я использую ноутбук linx, процессор I-7 core 1065, память 7,4 ГБ, 64-разрядная ubuntu
%matplotlib inline
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
import gensim.downloader as api
wv = api.load('word2vec-google-news-300')
for i, word in enumerate(wv.vocab):
if i == 10:
break
print(word)
pairs = [
('programming', 'linux'),
('programming', 'bicycle'),
('programming', 'apple'),
('programming', 'cereal'),
('programming', 'capitalism'),
('programming', 'computers'),
('programming', 'python'),
('programming', 'algebra'),
('programming', 'logic'),
('programming', 'math'),
]
for w1, w2 in pairs:
print('%rt%rt%.2f' % (w1, w2, wv.similarity(w1, w2)))
print(wv.most_similar(positive=['math'], topn=5))
Ответ №1:
Если ядро Jupyter умирает без четкого сообщения об ошибке, у вас, вероятно, заканчивается память.
На консоли, где вы запустили сервер Jupyter, может быть записана дополнительная информация. Если вы расширите свой вопрос, включив в него любую информацию, а также сведения о загруженной вами модели (размер на диске) и системе, на которой вы работаете (особенно, доступной оперативной памяти), возможно, можно будет внести другие предложения.
Также:
В то gensim-3.8.3
время как требуется большое новое увеличение объема оперативной памяти при первом .most_similar()
вызове, gensim-4.0.0beta
для предварительной версии требуется только гораздо меньшее приращение в это время — так что гораздо более вероятно, что если загрузка модели завершится успешно, вы также сможете получить .most_similar()
результаты. Поэтому также было бы полезно знать:
- Как вы установили
gensim-4.0.0beta
и подтвердили ли вы, что это версия, фактически используемая средой ядра вашего ноутбука? - Вы уверены, что предыдущие шаги (такие как загрузка) были выполнены успешно, и что это только amp; именно
most_similar()
то, что вызывает сбой? (Находится ли оно в отдельной ячейке, и перед попыткойmost_similar()
вы можете успешно запросить другие аспекты модели, такие как ее длина или содержит ли она определенные слова?)
Комментарии:
1. Спасибо за ваш ответ, я поддержал его и добавил больше своего кода. На самом деле работает над предварительно подготовленной моделью перчатки, но не Word2Vec
2. 7,4 ГБ немного маловато для работы с полным
GoogleNews
набором векторов, который составляет почти 4 ГБ на диске, иgensim-3.8
он расширится, по крайней мере, до 6 ГБ, когда вы начнете выполнятьmost_simlar()
подобные операции. (Если вы действительно установите и используетеgensim-4.0.0beta
, он будет использовать на несколько гигабайт меньше данных.)3. Кроме того, я бы посоветовал загружать необработанные данные в виде файла где-нибудь, где вы можете их видеть и работать с ними, а не использовать несколько непрозрачную
api.load()
функциональность. Когда у вас естьGoogleNews
файл самостоятельно, вы можете увидеть его размер, и у вас будет возможность использоватьmodel = KeyedVectors.load_word2vec_format(filename, limit=1000000)
только для загрузки 1-го 1 миллиона векторов (или любого другого меньшего подмножества, которое вы предпочитаете) для экономии памяти.4. Спасибо @gojomo, я ценю ваше понимание