如何将句子列表转换为IOB格式,在输出中保存句子分隔

时间:2016-12-27 13:52:28

标签: python nltk pos-tagger crf

我有一些txt文件,我需要转换为CRF模型的IOB格式。

使用nltk tree2conlltags我可以将标记化的postagged文本转换为我需要的IOB格式。

喜欢这个

Reset Permissions

但问题是输出我得到一个单词作为一个元素,但我需要一个句子作为元素。

此外,我首先尝试将文本分成句子,然后将它们标记化,因此我将保存句子boundAries,但是nltk pos tagger不接受列表类型数据。

也许有一种全新的方法来获得我需要的格式或

1 个答案:

答案 0 :(得分:0)

很容易将标记,PoS标记和NER标签连接成每个句子的一个字符串,例如。像这样(token_wise是你的例子中的数据):

>>> tuple(' '.join(layer) for layer in zip(*token_wise))
("u'Is Miami playing in Washigthon this month ?",
 'JJ NNP NN IN NNP DT NN .',
 'O B-PERSON O O B-GPE O O O')

你必须为每个句子重复一遍。 但它没有任何意义。您的CRF标记器将无法预测复杂标签,如'O B-PERSON O O B-GPE O O O',因为您将遇到巨大的稀疏数据问题。 大多数标签只会被看到一次,甚至更多的是输入句子。

另外,这不是IOB格式。在IOB中,每个元素都有I,O或B,但不是它们的组合。