У меня есть текстовый файл, каждая строка которого содержит несколько слов. Теперь, учитывая набор слов запроса, я должен найти количество строк в файле, где слова запроса совпадают. т.е. количество строк, содержащих два слова запроса, количество строк, содержащих 3 слова запроса и т. д.найти общее происхождение данных слов в строке
Я попытался использовать следующий код: Обратите внимание, что rest (list, word) удаляет слово из списка и возвращает обновленный список. linecount - количество строк в raw.
raw=open("raw_dataset_1","r")
queryfile=open("queries","r")
query=queryfile.readline().split()
query_size=len(query)
two=0
three=0
four=0
while linecount>0:
line=raw.readline().split()
if query_size>=2:
for word1 in query:
beta=rest(query,word1)
for word2 in beta:
if (word1 in line) and (word2 in line):
two+=1
print line
if (query_size>=3):
for word3 in query:
beta=rest(query,word3)
for word4 in beta:
gama=rest(beta,word4)
for word5 in gama:
if (((word3 in line) and (word4 in line)) and (word5 in line)):
three+=1
print line
linecount-=1
print two
print three
Он работает, хотя есть избыточность, я могу разделить «два» на 2, чтобы получить необходимое количество) Есть ли лучший подход, чтобы сделать это?
@Vidit Нет. Хочу хочу fi n строк, содержащих более одного слова запроса. Например, мой запрос «sun tree». И у меня есть линии «яблочное дерево манго», «солнце неба» и «звезда луны солнца». Тогда число строк, в которых встречается 2 слова запроса, равно 1, т. Е. «Sun tree sky» (эта строка содержит 2 слова запроса) – nish