我需要对葡萄牙语字符串执行词干分析。为此,我使用nltk.word_标记化()函数a,然后分别对每个单词进行词干分析。之后,我重建了字符串。它是有效的,但表现不好。我怎样才能更快?字符串长度约为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解释了连接字符串的各种方法,并显示了性能分析。由于迭代只进行一次,所以最好选择generator expression
而不是{generator expression
与join
一起使用可能会有帮助:将
my_text
用于长字符串:len(my_text) -> 444399
使用
timeit
进行比较:结果:
^{pr2}$将
generator expression
与join
一起使用:结果:
您可以将字符串作为文本文件读入,然后执行必要的操作,使用PySpark对每个单词执行词干。这将允许您并行执行操作。在
您也可以使用multiprocessing module。在
字符串对象在Python中是不可变的。查看您的代码:
每次在循环中创建新字符串并将其分配给
textAux
变量时。这是没有效率的。在我将把
^{pr2}$tokenAux
元素存储在一个列表中,最后将它们连接起来。参见示例:比较性能并与我们分享:)
有用的链接:
相关问题 更多 >
编程相关推荐