求助! 用hanlp 2.0分词的时候报错: RuntimeError: expected scalar type Float but found Long

求助!我在用hanlp 2.0运行分词的时候,总是会报错:RuntimeError: expected scalar type Float but found Long
而且是大量的长文本都会导致如下错误。。
谷歌搜说是pytorch的问题。。但我也不确定是不是源码的问题。。

版本:
hanlp==2.1.0a20
hanlp-common==0.0.6
hanlp-trie==0.0.2
torch==1.7.1
transformers==4.3.2

代码如下:

import hanlp

HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH) # 世界最大中文语料库
tok = HanLP[‘tok/coarse’]

beauty_vocab = set()
nline = 0
with open(’…/data/userdict.txt’, ‘r’, encoding=‘utf-8’) as fin:
for line in fin:
nline += 1
beauty_vocab.add(line.strip())
print('total userdict num: ', nline)
tok.dict_combine = beauty_vocab

text = ‘我最心水的那些 红:对口红这种东西真的是毫无抵抗力啊 每次入了新色就在蓝朋友手臂上试 他总会说 女生到底需要有多少口红啊 身为一个直男可能真的不懂 红有一百种 哈哈哈哈 言归正传 阿玛尼红管501 503 504 阿玛尼红管真的是我最爱的唇釉了 入的第一支是504 第一次用就被惊艳到了 竟然有这么丝滑的唇釉 完全是奶油慕斯质地 还呈现很高级的哑光感 真的是超爱 爱不释手 后来又相继收了501和503 以后一定还会继续收 喜爱程度 ysl方管17 13 17是我春夏用的最多次的一支 几乎每天都在用 不知道今天擦什么的时候就用它 准没错 一个夏天过去就下去了一大截 喜爱程度 13是后期入的 相比17利用率就没有那么高 怎么说呢 13还是有些挑皮的 素颜涂肯定是土爆了 喜爱程度 mac子弹头 see sheer也是我的心头爱 刚买的时候每天都放包里 随时补 超级滋润 颜色炒鸡日常 上班涂完全不会显得突兀 超爱 喜爱程度 chill小辣椒 也是超爱的一支 怎么涂都好看 毫不夸张 秋冬不知道涂啥时 擦它总不会出错 喜爱程度 雅诗兰黛love系列 300橘红色 310梅子色 都是我爱的颜色 很显白 喜爱程度 阿玛尼小胖丁504 大名鼎鼎的奶油橘 各种被夸 扛不住风种草的 但是!真的没有那么好 好吗 无论后涂薄涂感觉都不是很满意 我通常是叠加哑光其他口红上面用 喜爱程度 tf16 风老大的番茄色 忍不住入的 但是使用率很低 不知道为啥 可能不够日常 也可能是不舍得用 偷笑R 喜爱程度 香奈儿58 也是跟风入的 据说各种适合秋冬 适合黄皮 毫不犹豫拿下 but有点斯望 并不是很好驾驭啊 而且感觉不显白! 喜爱程度 ysl黑管402 这只是盲选的 适合春夏 感觉一般 中规中矩 喜爱程度 ysl镜面唇釉09 水红色 颜色不错 但是但是 这个唇釉的质地我真的是爱不起来 不能抿嘴 粘粘的 很不好上均匀 喜爱程度 3ce 南瓜色116 干!巨干!炒鸡干!根本不能用 买之前被颜色吸引 很多人都说它很干 我心想 再干能干成啥样 前一天晚上做唇膜 早晨先用唇部打底再涂 上班不到两小时 嘴就干到起皮 南瓜色口红很多 千万别买这一支 喜爱程度 最后说一句 本人黄皮 唇色浅 干起皮唇纹重 借蓝票的胳膊试色 仅供参考 第一次写这么长的笔记 手指断了 好了就酱 叹气R’

cut_res = HanLP([text])[‘tok/coarse’][0]
print(cut_res)

======================================================
结果就会报错,具体如下

Traceback (most recent call last):
File “/Users/river/Desktop/1-tag-recall/note-tag/optimization/src/preprocess.py”, line 27, in
cut_res = HanLP([text])
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/components/mtl/multi_task_learning.py”, line 768, in call
return super().call(data, batch_size, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/autograd/grad_mode.py”, line 26, in decorate_context
return func(*args, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/common/torch_component.py”, line 629, in call
return super().call(data, **merge_dict(self.config, overwrite=True,
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/common/component.py”, line 36, in call
return self.predict(data, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/components/mtl/multi_task_learning.py”, line 512, in predict
output_dict = self.predict_task(self.tasks[task_name], task_name, batch, results, output_dict,
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/components/mtl/multi_task_learning.py”, line 590, in predict_task
output_dict, batch = self.feed_batch(batch, output_key, output_dict, run_transform, cls_is_bos, sep_is_eos,
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/components/mtl/multi_task_learning.py”, line 682, in feed_batch
‘output’: task.feed_batch(h,
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/components/mtl/tasks/init.py”, line 182, in feed_batch
return decoder(h, batch=batch, mask=mask)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/nn/modules/module.py”, line 727, in _call_impl
result = self.forward(*input, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/components/mtl/tasks/ner/tag_ner.py”, line 35, in forward
contextualized_embeddings = self.secondary_encoder(contextualized_embeddings, mask=mask)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/nn/modules/module.py”, line 727, in _call_impl
result = self.forward(*input, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/layers/transformers/relative_transformer.py”, line 310, in forward
x = layer(x, mask)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/nn/modules/module.py”, line 727, in _call_impl
result = self.forward(*input, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/layers/transformers/relative_transformer.py”, line 264, in forward
x = self.self_attn(x, mask)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/nn/modules/module.py”, line 727, in call_impl
result = self.forward(*input, **kwargs)
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/hanlp/layers/transformers/relative_transformer.py”, line 150, in forward
D
= torch.einsum(‘nd,ld->nl’, self.r_w_bias, pos_embed)[None, :, None] # head x 2max_len, 每个head对位置的bias
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torch/functional.py”, line 344, in einsum
return _VF.einsum(equation, operands) # type: ignore
RuntimeError: expected scalar type Float but found Long

感谢反馈,已经修复。

建议遇到bug直接发到GitHub上,GitHub上的bug我会最高优先级处理,论坛回复靠缘分。