首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POS-Tagger非常慢

POS-Tagger非常慢
EN

Stack Overflow用户
提问于 2015-11-12 16:32:19
回答 3查看 3.8K关注 0票数 7

我使用nltk从句子中首先删除给定的停止词来生成n个字元.然而,nltk.pos_tag()在我的CPU上占用了0.6秒的时间(英特尔i7),速度非常慢。

产出:

代码语言:javascript
复制
['The first time I went, and was completely taken by the live jazz band and atmosphere, I ordered the Lobster Cobb Salad.']
0.620481014252
["It's simply the best meal in NYC."]
0.640982151031
['You cannot go wrong at the Red Eye Grill.']
0.644664049149

守则:

代码语言:javascript
复制
for sentence in source:

    nltk_ngrams = None

    if stop_words is not None:   
        start = time.time()
        sentence_pos = nltk.pos_tag(word_tokenize(sentence))
        print time.time() - start

        filtered_words = [word for (word, pos) in sentence_pos if pos not in stop_words]
    else:
        filtered_words = ngrams(sentence.split(), n)

这真的很慢还是我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-12 16:58:33

使用pos_tag_sents标记多个句子:

代码语言:javascript
复制
>>> import time
>>> from nltk.corpus import brown
>>> from nltk import pos_tag
>>> from nltk import pos_tag_sents
>>> sents = brown.sents()[:10]
>>> start = time.time(); pos_tag(sents[0]); print time.time() - start
0.934092998505
>>> start = time.time(); [pos_tag(s) for s in sents]; print time.time() - start
9.5061340332
>>> start = time.time(); pos_tag_sents(sents); print time.time() - start 
0.939551115036
票数 9
EN

Stack Overflow用户

发布于 2016-10-04 07:58:05

代码语言:javascript
复制
nltk pos_tag is defined as:
from nltk.tag.perceptron import PerceptronTagger
def pos_tag(tokens, tagset=None):
    tagger = PerceptronTagger()
    return _pos_tag(tokens, tagset, tagger)

因此,每次对pos_tag的调用都实例化感知器模块,该模块占用大量的计算量,time.You可以通过直接调用tagger.tag来节省这一时间:

代码语言:javascript
复制
from nltk.tag.perceptron import PerceptronTagger
tagger=PerceptronTagger()
sentence_pos = tagger.tag(word_tokenize(sentence))
票数 7
EN

Stack Overflow用户

发布于 2015-11-20 07:51:48

如果您正在寻找另一个在Python中具有快速性能的POS标签,您可能需要尝试RDRPOSTagger。例如,在英语POS标记中,使用Core2Duo2.4GHz的计算机,Python中的单个线程实现的标记速度为8K字/秒。通过使用多线程模式,您可以获得更快的标记速度。与最先进的taggers相比,RDRPOSTagger获得了非常具有竞争力的精确性,并且现在支持40种语言的预培训模型。见本论文的实验结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33676526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档