我试图通过使用nltk工具包删除停用词来处理用户输入的文本,但是使用停用词删除时,会删除"and","或","not"等字样.我希望在禁用词删除过程之后出现这些单词,因为它们是稍后将文本作为查询处理所需的运算符.我不知道哪些是文本查询中可以成为运算符的单词,我还想从文本中删除不必要的单词.
在我的优化任务中,我发现内置的split()方法比re.split()等效快了大约40%.
虚拟基准(易于复制 - 粘贴):
import re, time, random
def random_string(_len):
letters = "ABC"
return "".join([letters[random.randint(0,len(letters)-1)] for i in range(_len) ])
r = random_string(2000000)
pattern = re.compile(r"A")
start = time.time()
pattern.split(r)
print "with re.split : ", time.time() - start
start = time.time()
r.split("A")
print "with built-in split : ", time.time() - start
Run Code Online (Sandbox Code Playgroud)
为何如此区别?