【发布时间】:2019-05-09 00:08:28
【问题描述】:
我有一个包含 300 万句(大约)的文件。每个句子大约有 60 个单词。我想把所有的词结合起来,从中找出独特的词。
我尝试了以下代码:
final_list = list()
for sentence in sentence_list:
words_list = nltk.word_tokenize(sentence)
words = [word for word in words_list if word not in stopwords.words('english') ]
final_list = final_list + set(words)
此代码提供了唯一的单词,但处理时间太长。每小时大约 50k 句。处理可能需要 3 天时间。
我也尝试过使用 lambda 函数:
final_list = list(map(lambda x: list(set([word for word in sentence])) ,sentence_list))
但是,执行方面没有显着改善。请提出一个具有有效执行时间的更好的解决方案。欢迎提出并行处理建议。
【问题讨论】:
-
如果单词已经是句子的元素,为什么还需要列表理解
[word for word in sentence]?为什么不直接运行set(sentence)? -
因为句子是连续的,然后我必须对它们进行标记。我有条件在发送到列表之前申请
-
啊,感谢您更新示例 :)
标签: python lambda nlp nltk execution