python - h2o 聚合方法“none”将未知词映射到 NAN 而不是向量
问题描述
我目前正在使用 h2o.ai 来执行一些 NLP。我在 Word2Vec 中有一个训练有素的语料库模型,并使用“Average”方法成功聚合了许多记录。当我想通过使用这个 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 模型对它们进行编码以获得一袋单词。底部是一个草稿循环,我用它来放置正确的向量和正确的记录。让我知道是否需要澄清。
解决方案
不幸的是,区分字典中缺失的单词和用于划分记录开头和结尾的 NA 的功能目前不可用。我在这里制作了一张 jira 票来跟踪问题。请随时评论或更新票证。
推荐阅读
- winapi - 设置背景颜色后更改标签的文本失败
- javascript - 限制 Vue 中显示的数据
- python - 未加权有向图距离
- java - Can't git clone larger repository
- mongodb - Moongose:.populate on key with white space 不起作用
- css - 带有文本溢出的动态列大小调整
- python - 如何在 OpenTURNS 的最大似然估计期间配置优化算法?
- python - 我试图使用 Python 3.9 在 Discord 上给自己一个角色,但它显示了一个错误
- excel - 计算有多少单元格超过其他单元格的值
- java - 在 Java Maven 项目中读取现有文件时出现 FileNotFoundException