我当前正在使用h2o.ai执行一些NLP。我在Word2Vec中为我的语料库提供了经过训练的模型,并已成功使用“平均”方法聚合了许多记录。当我想通过使用此w2v模型为每个条目创建一袋单词来为DRF模型创建功能时,就会出现问题。当我使用聚合方法“ none”时,向量将在包含NaN的单列中返回,其中记录的开始和结束,但是模型中的未知词也将映射到NaN而不是未知词向量。这使我无法针对每个记录将向量重新组织成一袋单词,因为由于多余且不可预测的NaN丢失了记录分离关联。有解决办法吗?
我目前将使用原始的标记化列表为原始的双重NaN结构创建索引,该索引用于在记录之间进行区分,然后基于此重组我的向量。只是想把它扔在那里,看看是否有人在处理这个问题,或者是否存在我在互联网上找不到的某种修复程序。
DATA = pd.read_sql(sql, conn1)
steps = [
(r'[\n\t\’\–\”\“\!~`\"@#\$%\^\&\*()_+\{\}|:<>\?\-=\[\]\\;\',./\d]', ' '),
(r'\s+', ' ')
]
steps = [ (re.compile(a), b) for (a, b) in steps ]
def do_steps(anarr):
for pattern,replacement in steps:
anarr = pattern.sub(replacement,anarr)
return anarr
DATA.NARR = DATA.NARR.apply(do_steps)
train_hdata = h2o.H2OFrame(DATA).ascharacter()
train_narr = train_hdata["NARR"]
train_key = train_hdata["KEY"]
train_tokens_narr = train_narr.tokenize(split=' ')
train_vecs = w2v.transform(train_tokens_narr, aggregate_method='NONE')
VECS = train_vecs.as_data_frame()
df = train_tokens_narr.as_data_frame()
B=(VECS.isnull()&df.isnull())
idx = B[B['C1'] == True].index.tolist()
X = []
X.append('')
j=0
for i in tqdm(range(len(VECS.C1)-1)):
if i in idx:
X[j]= X[j][:-2]
j+=1
X.append('')
else:
X[j]= X[j] + str(VECS.C1[i])[:6] + ', '
s = pd.DataFrame({"C1":X})
print(s)
以上是当前代码,希望获取一些记录并使用word2vec模型对一袋单词进行编码。底部是草稿循环,我使用它来将正确的向量与正确的记录一起放置。让我知道是否需要澄清。