如何复现这个问题
Unicode带有重音符号的字符,如 é
,显示正确但被计算为两个字符,导致跨度错误。
在jsonlines文件中使用的Unicode字符串:{"text":"Département de Médecine, Université de Sherbrooke, Centre Hospitalier, 3001 12e Ave Nord, Sherbrooke, QC J1H5N4","label":[[0,114,"affiliation"],[0,25,"org"],[27,52,"org"],[54,72,"org"],[74,91,"street-address"],[93,103,"city"],[105,107,"state"],[108,114,"region-postal-code"]]}
用于创建jsonl文件的代码:doccano_df.to_json('data.json',orient='records', lines=True, force_ascii=False)
我尝试了在Doccano前端上传文件时从下拉菜单中选择 auto
、 utf_8
和 ascii
编码。我的数据是 utf-8
。
当你在Python 3.10中使用unicode字符串时,跨度似乎正确:
"De\u0301partement de Me\u0301decine, Universite\u0301 de Sherbrooke, Centre Hospitalier, 3001 12e Ave Nord, Sherbrooke, QC J1H5N4"[0:25]
# 输出:'Département de Médecine'"Département de Médecine, Université de Sherbrooke, Centre Hospitalier, 3001 12e Ave Nord, Sherbrooke, QC J1H5N4"[0:25]
# 输出:'Département de Médecine'
你的环境
- 操作系统:MacOS Montery 12.6.2 (21G320)
- 使用的Python版本:3.8
- 安装doccano的时间:2023年8月14日
- 如何安装doccano(Heroku按钮等):Docker镜像 doccano/doccano:latest
- debian:11-slim, 11.4-slim
- python:3.8-slim
1条答案
按热度按时间rkkpypqq1#
看起来你可能为项目设置了“将字形单元格计数视为一个字符”选项?如果是这样的话,那么在导入之前,你需要从标准Python代码点跨度进行转换。我认为以下方法可行,使用grapheme包: