Python 将带有自定义标记实体的文本输入格式化为sklearn crfsuite格式

Python 将带有自定义标记实体的文本输入格式化为sklearn crfsuite格式,python,nlp,tagging,Python,Nlp,Tagging,我有一些应该用于实体识别的自定义数据,我计划使用pythonssklearncrfsuite进行相同的识别。 数据如下所示: I O want O a O black color shoe product of O size O 9 size .. I O want O a O blue color shirt product of O brand O Arrow brand size O XL size .. I

我有一些应该用于实体识别的自定义数据,我计划使用pythonssklearncrfsuite进行相同的识别。 数据如下所示:

I   O
want    O
a   O
black   color
shoe    product
of  O
size    O
9   size
..
I   O
want    O
a   O
blue    color
shirt   product
of  O
brand   O
Arrow   brand
size    O
XL  size
..
I   O
want    O
a   O
white   color
khaki   product-subcategory
shirt   product
of  O
size    M
但是,我需要将格式更改为:

[('Melbourne', 'NP', 'B-LOC'),
 ('(', 'Fpa', 'O'),
 ('Australia', 'NP', 'B-LOC'),
 (')', 'Fpt', 'O'),
 (',', 'Fc', 'O'),
 ('25', 'Z', 'O'),
 ('may', 'NC', 'O'),
 ('(', 'Fpa', 'O'),
 ('EFE', 'NC', 'B-ORG'),
 (')', 'Fpt', 'O'),
 ('.', 'Fp', 'O')]
按照套餐培训师的要求。 有人能帮我一下吗。 我所做的是:

list_of_lists = []
with open('./trainData.txt') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split('..')]
        list_of_lists.append(inner_list)
但这并没有实现我想要的,结果是:

列表 出[25]:

[['I\tO'],
 ['want\tO'],
 ['a\tO'],
 ['black\tcolor'],
 ['shoe\tproduct'],
 ['of\tO'],
 ['size\tO'],
 ['9\tsize'],
 ['', ''],
 ['I\tO'],
 ['want\tO'],
 ['a\tO'],
 ['blue\tcolor'],
 ['shirt\tproduct'],
 ['of\tO'],
 ['brand\tO'],
 ['Arrow\tbrand'],
 ['size\tO'],
 ['XL\tsize']

字段由制表符(
\t
)分隔,而不是由“
”分隔。”
。所以在选项卡上拆分,而不是
。”
。请注意,墨尔本示例中的元组长度为3,而您正在生成长度为2的列表。我认为必须进行两级拆分。一种是将其分成单独的句子,然后再分成单词。因此,第一个句子将生成一个带有标记的单词列表。语料库作为一个整体将是这样一个句子的列表。但问题是分词器和分句器是不一样的。