在Python上创建完整的字符串

我需要在葡萄牙语字符串上执行词干.为此,我使用nltk.word_tokenize()函数对字符串进行标记,然后单独生成每个单词.之后,我重建了字符串.它工作正常,但表现不佳.我怎样才能让它更快?字符串长度约为200万字.

    tokenAux=""
    tokens = nltk.word_tokenize(portugueseString)
        for token in tokens:
            tokenAux = token
            tokenAux = stemmer.stem(token)    
            textAux = textAux + " "+ tokenAux
    print(textAux)

抱歉英文不好,谢谢!

解决方法:

string是不可变的,因此,如果字符串很长,每次更新字符串都不是好习惯. link here解释了连接字符串和显示性能分析的各种方法.而且,因为迭代只进行一次,所以最好选择生成器表达而不是列表理解.有关详细信息,您可以查看discussion here .在这种情况下,使用带有join的生成器表达式可能会有所帮助:

使用my_text作为长字符串:len(my_text) – > 444399

使用timeit进行比较:

%%timeit
tokenAux=""
textAux=""
tokens = nltk.word_tokenize(my_text)
for token in tokens:
    tokenAux = token
    tokenAux = stemmer.stem(token)    
    textAux = textAux + " "+ tokenAux

结果:

1 loop, best of 3: 6.23 s per loop

使用带有join的generator表达式:

%%timeit 
' '.join(stemmer.stem(token) for token in nltk.word_tokenize(my_text))

结果:

1 loop, best of 3: 2.93 s per loop
上一篇:学习OAuth 2.0


下一篇:盘点单点登录问题的那些解决方案