-1

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

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

像这样

("u'Is", 'JJ', u'O')
('Miami', 'NNP', u'B-PERSON')
('playing', 'NN', u'O')
('in', 'IN', u'O')
('Washigthon', 'NNP', u'B-GPE')
('this', 'DT', u'O')
('month', 'NN', u'O')
('?', '.', u'O')

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

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

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

4

1 回答 1

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,但不是它们的组合。

于 2016-12-28T12:12:01.863 回答