taishan1994 / OneRel_chinese

OneRel在中文关系抽取中的使用
113 stars 9 forks source link

为什么要在每个字后面加空格 #7

Open Yun-Peng-Wang opened 1 year ago

Yun-Peng-Wang commented 1 year ago

你好,请问为什么要在每个字后面加空格

taishan1994 commented 1 year ago

你好,请问为什么要在每个字后面加空格

从onerel原始仓库里面贴过来: 最近收到一些小伙伴的邮件,主要问题集中在“目前的标注方式在头实体或者尾实体只有一个字符的时候会出问题”。在此详细解释。

首先,上述标注方式在处理单个字符实体的时候是不矛盾的。因为我们是按照HB-TB,HB-TE,HE-TE的顺序来标注实体边界,单个字符实体的后一个标签会覆盖掉之前的标签。因此,如果是头实体单个字符,尾实体多个字符,则解码时查询HB-TB与HB-TE组成的元组即可;如果头实体和尾实体都只有一个字符,则在解码过程中查询孤立的HE-TE即可。这种方法是可行的,但是比较麻烦。

因此,我们在实现过程中,采用了“将句子中的空格也作为字符”的方式,即“北京今天有雨”会被tokenize成“北[u]京[u]今[u]天[u]有[u]雨[u]”,话相当于每一个字符都是由它本身和之后的空格组成,也就不存在单个字符组成的实体的情况。这样做会使句子长度变成原来的两倍,明显降低模型运行速度(从约60ms一个batch到约140ms一个batch),但是能简化模型在推理阶段的逻辑。

xiehou-design commented 1 year ago

你好,我想问一下原始项目是不是又不开源了?网上看到几个好像是fork原始代码的仓库(https://github.com/China-ChallengeHub/OneRel),特别注意到,这个头实体或者尾实体是单个字符的情况,那是不是在原始代码的情况下添加你说的这两种解码方式就行啊,就是单独考虑单个字符的情况。 你那还有没有之前开源的代码?方便分享一份吗?

taishan1994 commented 1 year ago

你好,我想问一下原始项目是不是又不开源了?网上看到几个好像是fork原始代码的仓库(https://github.com/China-ChallengeHub/OneRel),特别注意到,这个头实体或者尾实体是单个字符的情况,那是不是在原始代码的情况下添加你说的这两种解码方式就行啊,就是单独考虑单个字符的情况。 你那还有没有之前开源的代码?方便分享一份吗?

刚看了,应该还有吧:https://github.com/China-ChallengeHub/OneRel

xiehou-design commented 1 year ago

你好,我想问一下原始项目是不是又不开源了?网上看到几个好像是fork原始代码的仓库(https://github.com/China-ChallengeHub/OneRel),特别注意到,这个头实体或者尾实体是单个字符的情况,那是不是在原始代码的情况下添加你说的这两种解码方式就行啊,就是单独考虑单个字符的情况。 你那还有没有之前开源的代码?方便分享一份吗?

刚看了,应该还有吧:https://github.com/China-ChallengeHub/OneRel

好的,就是不太确定这个仓库是不是