python字符串创建_在Python上创建完整的字符串

该博客讨论了如何优化在葡萄牙语字符串上的词干提取过程。通过对比使用`nltk.word_tokenize()`进行标记并逐个更新字符串的方法与使用生成器表达式结合`join`函数的方法,发现后者显著提高了性能。对于处理大型文本,如200万字的字符串,使用生成器表达式可以将运行时间从约6.23秒减少到约2.93秒。这种方法减少了字符串操作的开销,特别是在处理不可变字符串时。
摘要由CSDN通过智能技术生成

我需要在葡萄牙语字符串上执行词干.为此,我使用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

标签:python,nlp,nltk,stemming

来源: https://codeday.me/bug/20190622/1264573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值