【发布时间】:2019-08-17 18:55:40
【问题描述】:
我写了一个小函数来清理文本文件。该函数将删除任何长度小于 2 的单词,它将删除所有特殊字符和所有完全由数字组成的单词,并使用自定义列表停止单词。它还将进行简单的拼写检查并删除所有“假词”。但是,该功能运行速度非常慢,我想知道有什么方法可以加快速度。
def clean_up_phrases_no_stopwords_no_short_letters_no_numeric(kx):
kx=" ".join([x for x in kx.split(" ") if len(x)>2])
kx=" ".join([x for x in kx.split(" ") if x not in total_stopword])
kx=" ".join(re.sub('[^A-Za-z0-9]+', '', x) for x in kx.split(" "))
kx=" ".join([x for x in kx.split(" ") if not x.isdigit()])
filted_fake_words=list(filter(None, [return_valid_word(x) for x in kx.split(" ") ]))
kx=" ".join(filted_fake_words)
return kx
def return_valid_word(word):
word_token=word.split(" ")
word_token=list(filter(None, word_token))
word_list=list()
for x in word_token:
word_list.append(lemma_single_word(x))
if len([x for x in word_list if x in word_set])>0:
return word
else:
filtered_word=[return_valid_single_nondict_word(x) for x in word_list]
if filtered_word==[None]:
return None
else:
word=" ".join([return_valid_single_nondict_word(x) for x in word_list])
return word
def return_valid_single_nondict_word(word):
character=list(word)
max_character_num=Counter(character).most_common(1)[0][1]
if max_character_num > 3:
return None
else:
return word
'''
【问题讨论】:
标签: python python-3.x list