Điều này xuất hiện trong một câu hỏi khác, nhưng tôi nghĩ tốt nhất nên hỏi câu hỏi này là một câu hỏi riêng. Cung cấp danh sách câu lớn (thứ tự 100 nghìn):Cách hiệu quả nhất để lập chỉ mục các từ trong tài liệu?
[
"This is sentence 1 as an example",
"This is sentence 1 as another example",
"This is sentence 2",
"This is sentence 3 as another example ",
"This is sentence 4"
]
cách tốt nhất để mã hóa chức năng sau là gì?
def GetSentences(word1, word2, position):
return ""
nơi cho hai chữ, word1
, word2
và một vị trí position
, hàm sẽ trả về danh sách của tất cả các câu thoả mãn ràng buộc. Ví dụ:
GetSentences("sentence", "another", 3)
nên trở lại câu 1
và 3
như chỉ số của câu. Cách tiếp cận hiện tại của tôi là sử dụng một từ điển như thế này:
Index = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: [])))
for sentenceIndex, sentence in enumerate(sentences):
words = sentence.split()
for index, word in enumerate(words):
for i, word2 in enumerate(words[index:):
Index[word][word2][i+1].append(sentenceIndex)
Nhưng điều này nhanh chóng thổi mọi thứ ra khỏi bộ dữ liệu có kích thước khoảng 130 MB khi RAM 48 GB của tôi cạn hết chưa tới 5 phút. Tôi bằng cách nào đó có được một cảm giác đây là một vấn đề phổ biến nhưng không thể tìm thấy bất kỳ tài liệu tham khảo về cách giải quyết này hiệu quả. Bất kỳ đề xuất về cách tiếp cận này?
Chỉ cần làm rõ: là 'vị trí' khoảng cách giữa hai từ trong câu? – misha
@misha: Có. Đúng rồi. – Legend
Có hai "câu 1" là khó hiểu. Nó có khớp với chữ "1" thứ hai và không phải là chữ cái đầu tiên không? – shookster