如何在 python crfsuite 中使用 Conll 2003 语料库

Posted

技术标签:

【中文标题】如何在 python crfsuite 中使用 Conll 2003 语料库【英文标题】:How do I use Conll 2003 corpus in python crfsuite 【发布时间】:2018-01-19 01:37:37 【问题描述】:

我已经下载了 Conll 2003 语料库(“eng.train”)。我想用它来使用 python crfsuite 训练来提取实体。但是我不知道如何加载这个文件进行训练。

我找到了这个例子,但它不是英文的。

train_sents = list(nltk.corpus.conll2002.iob_sents('esp.train'))
test_sents = list(nltk.corpus.conll2002.iob_sents('esp.testb'))

此外,我还想在未来培训 POS 或位置以外的新实体。我该如何添加这些。

还请建议如何处理多个单词。

【问题讨论】:

有同样的问题。似乎您必须编写一个解析器,该解析器为英语产生与您提到的西班牙语示例相同的输出。你能找到更简单的路径吗? 【参考方案1】:

您可以使用 ConllCorpusReader

这里是一个通用的实现ConllCorpusReader('file path', 'file name', columntypes=['','',''])

这里是您可以使用的列类型列表'WORDS', 'POS', 'TREE', 'CHUNK', 'NE', 'SRL', 'IGNORE'

示例

from nltk.corpus.reader import ConllCorpusReader

train = ConllCorpusReader('CoNLL-2003', 'eng.train', ['words', 'pos', 'ignore', 'chunk'])
test = ConllCorpusReader('CoNLL-2003', 'eng.testa', ['words', 'pos', 'ignore', 'chunk'])

【讨论】:

以上是关于如何在 python crfsuite 中使用 Conll 2003 语料库的主要内容,如果未能解决你的问题,请参考以下文章

CRF++ 或 CRFSuite

无法用crfsuite的C++ API编译一个非常简单的Tagger示例

CRF进行中文命名实体识别(使用sklearn_crfsuite进行实现)

conda install sklearn_crfsuite 在 spyder 中不起作用

ModuleNotFoundError:没有名为“sklearn_crfsuite”的模块

自然语言处理基于sklearn-crfsuite进行命名实体识别