1

按照步骤将 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",
                "space":" ",
                "tag":"-",
                "ner":"O"
              },
              {
                "id":2,
                "orth":"DE",
                "space":" ",
                "tag":"-",
                "ner":"O"
              },
              {
                "id":3,
                "orth":"LA",
                "space":" ",
                "tag":"-",
                "ner":"O"
              },

... 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, 'PERS'), (26, 34, 'PERS'), (78, 85, 'PERS')]})
... continue
]

这可能是因为我的 IOB 文件不包含句子之间的空格吗?(因为查看spaCy 转换器的示例,它似乎不会影响 iob 到 json 的转换)

如果您对此问题有任何线索,请提前致谢。

4

1 回答 1

2

因为这种格式的原始语料库不包含空格信息,所以无法生成原始/正确raw的句子,所以保留为null. spacy train将在训练和评估时考虑是否有空白信息,因此可以使用或不使用 进行训练raw,或者从使用和不使用的混合文档中进行训练raw

如果您正在使用 spacy 进行训练,则不希望将此数据转换为带有文本字符串和字符偏移的格式。如果您有类似 的标记l',则会导致问题,如果有以下空格,则会错误地将其标记化。您应该能够使用带有标签spacy train的 JSON 格式。"ner"

于 2021-05-03T17:42:06.613 回答