问题描述
按照步骤将IOB格式的数据转换为兼容spaCy的JSON;应该表示句子的值 "raw": string
在我的 JSON 中显示为“null”。
以下是我的数据摘录 (test.iob
):
GRIMALTE B-PERS
AMANT O
DE O
LA O
dame B-PERS
Gradisse B-PERS
narre O
sommairement O
Les O
amoureux O
regredz O
de O
Flamete B-PERS,O
qui O
furent O
occasion O
qu' O
il O
cherchast O
moyen O
d' O
y O
remedier O
Chapitre O
premier O
. O
BRief O
traictie O
par O
Jehan B-PERS
... continue
然后,我输入了命令:
python -m spacy convert -c auto -s -n 1 -t json ./test.iob . --lang fr
最后,在输出中,我得到以下 JSON,但没有 "raw"
值:
[
{
"id":0,"paragraphs":[
{
"raw":null,"sentences":[
{
"tokens":[
{
"id":0,"orth":"GRIMALTE","space":" ","tag":"-","ner":"U-PERS"
},{
"id":1,"orth":"AMANT","ner":"O"
},{
"id":2,"orth":"DE",{
"id":3,"orth":"LA",... continue
我真的很想检索这句话(在“原始”值中),以便能够从 JSON 的实体中创建如下训练集:
[
("GRIMALTE AMANT DE LA dame Gradisse narre sommairement Les amoureux regredz de Flamete,qui furent occasion qu' il cherchast moyen d' y remedier Chapitre premier ",{'entities': [(0,8,'PERS'),(21,25,(26,34,(78,85,'PERS')]})
... continue
]
这可能是因为我的 IOB 文件在句子之间不包含空格吗? (因为查看 examples of the spaCy converter 似乎不会影响 iob 到 json 的转换)
如果您对此问题有任何线索,请提前致谢。
解决方法
由于这种格式的原始语料库不包含空格信息,无法生成原始/正确的raw
句,所以保留为null
。 spacy train
会在训练和评估时考虑是否有空白信息,因此可以在有或没有 raw
的情况下进行训练,或者从有和没有 raw
的混合文档中进行训练。
如果您正在使用 spacy 进行训练,您不希望将此数据转换为带有文本字符串和字符偏移量的格式。如果您有 l'
之类的标记,则会导致问题,如果有以下空格,则会错误地标记化。您应该能够使用带有 spacy train
标签的 JSON 格式的 "ner"
。