我正在尝试使用W2V。我将我的预处理数据保存为一个pandas数据框架,我想对我的预处理数据应用word2vec算法。
这是我的数据。http://naver.me/IFjLAHld
这是我的代码。
from gensim.models.word2vec import Word2Vec
import pandas as pd
import numpy as np
df = pd.read_excel('re_nlp0820.xlsx')
model = Word2Vec(df['nlp'],
sg=1,
window=3,
min_count=1,
workers=4,
iter=1)
model.init_sims(replace=True)
model_result1 = model.wv.most_similar('국민', topn =20)
print(model_result1)
请帮帮我
首先,您需要将传递给Word2Vec实例的数据转换为嵌套列表其中每个列表包含文本的标记形式. 您可以这样做:
from gensim.models.word2vec import Word2Vec
import pandas as pd
import numpy as np
import nltk
df = pd.read_excel('re_nlp0820.xlsx')
nlp = [nltk.word_tokenize(i) for i in df['nlp']]
model = Word2Vec(nlp,
sg=1,
window=3,
min_count=1,
workers=4,
iter=1)
model.init_sims(replace=True)
model_result1 = model.wv.most_similar('국민', topn =20)
print(model_result1)
Gensim的Word2Vec
需要一个可重复迭代的序列作为其训练语料库,其中每个项目都是一个单词列表。
你df['nlp']
可能只是一个字符串序列,所以它的格式不正确。你应该确保它的每一项都被分解成一个Pythonlist
,其中包含你想要的单词作为单独的字符串。
(单独:min_count=1
对于这个算法来说几乎总是一个坏主意,如果丢弃使用示例很少的罕见词,则会得到更好的结果。而且,您根本不需要调用.init_sims()
。)