目标是仅保留与某个主题(电影)相关的查询,然后使用NLP对这些过滤的查询进行聚类(提取-> tf_idf-> pca-> kmeans)。
我试图使用嵌套循环来过滤查询,但是要花10多个小时才能完成。
filtered = []
with open('search_logs.txt', 'r', encoding='utf-8') as f:
for i, line in enumerate(f):
query, timestamp = line.strip().split('\t')
for word in key_words:
if word in query:
filtered.append(i)
我研究了使用正则表达式(word1 | word2 | ... | wordN)的解决方案,但是问题是我无法将查询组合成一个大字符串,因为我需要过滤不相关的查询。
更新:日志和关键字示例
search_logs.txt
'query timestamp\n'
'the dark knight 2019-02-17 19:05:12\n'
'how to do a barrel roll 2019-02-17 19:05:13\n'
'watch movies 2019-02-17 19:05:13\n'
'porn 2019-02-17 19:05:13\n'
'news 2019-02-17 19:05:14\n'
'rami malek 2019-02-17 19:05:14\n'
'Traceback (most recent call last): File "t.py" 2019-02-17 19:05:15\n'
.......... # millions of other search queries
key_words = [
'movie',
'movies',
'cinema',
'oscar',
'oscars',
'george lucas',
'ben affleck',
'netflix',
.... # hundreds of other words and phrases
]