Tôi đang tìm giải thuật tốt nhất để giải quyết vấn đề này: có danh sách (hoặc một dict, một tập hợp) các câu nhỏ, tìm tất cả các lần xuất hiện của câu này trong văn bản lớn hơn . Các câu trong danh sách (hoặc dict, hoặc bộ) là khoảng 600k nhưng hình thành, trung bình, bằng 3 từ. Văn bản trung bình là 25 từ. Tôi vừa định dạng văn bản (xóa dấu câu, tất cả chữ thường và tiếp tục như thế này).Tìm nhiều chuỗi văn bản - Python
Dưới đây là những gì tôi đã cố gắng ra (Python):
to_find_sentences = [
'bla bla',
'have a tea',
'hy i m luca',
'i love android',
'i love ios',
.....
]
text = 'i love android and i think i will have a tea with john'
def find_sentence(to_find_sentences, text):
text = text.split()
res = []
w = len(text)
for i in range(w):
for j in range(i+1,w+1):
tmp = ' '.join(descr[i:j])
if tmp in to_find_sentences:
res.add(tmp)
return res
print find_sentence(to_find_sentence, text)
Out:
['i love android', 'have a tea']
Trong trường hợp của tôi, tôi đã sử dụng một thiết lập để tăng tốc độ hoạt động in
Đó là một câu hỏi quá rộng nhưng bạn có thể thử tổ chức nhiều chuỗi truy vấn nhỏ thành cây tiền tố (hoặc cái gì khác, tùy thuộc vào đặc điểm của chuỗi truy vấn). Bằng cách này, mã có thể thông minh hơn để bỏ qua các truy vấn không thể và kiểm tra/tinh chỉnh các kết quả khớp một phần. –