我最初使用来自 NLTK 的以下 Penn Treebank 标记器:

POS_Tagger = UnigramTagger(treebank.tagged_sents(), backoff=DefaultTagger('NN'))

然而,这对于口语文本来说是不够的。例如,“你好”在本应被识别为感叹词时却未被识别。我从这里 ( In NLTK pos_tag, why “hello” is classified as Noun? ) 读到,如果我想标记口语文本,我将“需要在整个 Penn Treebank 上训练标记器,其中包括大约 300 万个英语口语单词。”我现在的问题是 我怎样才能做到这一点?我一直在这里 ( Penn Treebank Project ) 但在上面找不到任何东西。

如果在整个 Penn Treebank 上训练太难了,还有什么替代方法?我正在考虑使用 Brown 语料库,但 POS 标签不同,这使我不得不重写程序的其他部分。

最佳答案

不幸的是,Penn Treebank 只能通过 Linguistic Data Consortium 支付高额费用。如果您的需求是非商业性的,您也许可以找到可以授予您访问权限的学者。

或者,您可以通过在其他数据(新闻文章、布朗、维基百科等...)上运行现有的 POS 标记器(如 ClearNLP toolsStanford CoreNLP tools)来创建自己的银标准(而不是金标准)数据,然后您可以获取这些标记数据并训练 NLTK 标记器。当然,如果您需要更好地面向语音的数据,您可能需要查看 Switchboard 语料库。看起来通过知识共享许可有一个 version with some POS and syntactic annotation 可用。

关于python - 如何在整个 Penn Treebank 语料库上训练 NLTK?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16900503/

10-10 20:12