我目前正在使用h2o.ai来执行一些NLP。我用Word2Vec为我的语料库建立了一个训练模型,并用“平均”方法成功地聚合了许多记录。当我想通过使用这个w2v模型为每个条目创建一个单词包来为DRF模型创建特性时,问题就来了。当我使用聚合方法“none”时,向量将返回到包含记录开始和结束的NaN的单个列中,但是模型中的未知单词也将映射到NaN,而不是未知单词向量。这阻止了我将向量重新组织为每个记录的一袋字,因为由于额外的、不可预测的输入nan,记录分离关联丢失。有办法解决这个问题吗?
目前,我将使用原始的标记化列表为原始的double-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)