如何加快缓慢的POS标记?

时间:2017-05-03 19:03:52

标签: python performance nlp nltk pos-tagger

在您将我重定向到另一个stackoverflow页面之前,因为我知道有一些关于加速POS标记的问题,我已经浏览并加速了我的代码,其中包含以下建议:Slow performance of POS tagging. Can I do some kind of pre-warming?

我正在使用Python 3.6。我有包含〜100,000单词的列表,这些单词已使用nltk进行了标记。这些都是非常重要的列表,所以我知道标记所有这些单词本身就需要花费一些时间。我已将标记器加载到外面,如下所示:

def tag_wordList(tokenizedWordList):       
    from nltk.tag.perceptron import PerceptronTagger
    tagger=PerceptronTagger() # load outside

    for words in tokenizedWordList:
         taggedList = tagger.tag(tokenizedWordList) # add POS to words

    return taggedList

采取这一措施已经大大加快了速度,但要达到10万多字,它仍然需要超过1.5小时(并且它仍在运行)。该代码适用于较小的数据集。我相信我尝试将列表转换为一个集合,但没有太大的改进,尽管我将再次尝试以获得良好的衡量标准。任何人都有提高效率的其他提示吗?

1 个答案:

答案 0 :(得分:0)

如果这确实是您的标记代码,那么您在转到下一个十字词之前会标记十个单词。在抱怨它们太慢之前,先了解你的工具是如何工作的。

您可以通过在完整的单词标注化句子列表上调用pos_tag_sents()来获得进一步的加速,而不是为每个句子单独启动它(甚至只是一次)。

tagged_sents = nltk.pos_tag_sents(tokenized_sentences)