我最初使用来自 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 tools 或 Stanford CoreNLP tools)来创建自己的银标准(而不是金标准)数据,然后您可以获取这些标记数据并训练 NLTK 标记器。当然,如果您需要更好地面向语音的数据,您可能需要查看 Switchboard 语料库。看起来通过知识共享许可有一个 version with some POS and syntactic annotation 可用。
关于python - 如何在整个 Penn Treebank 语料库上训练 NLTK?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16900503/