Суть:
1) у меня есть большое кол-во текстов из ВК
2) а также словарь слов, с которыми я работаю
Мне нужно из этой базы тестов вытащить только те тексты, которые касаются выбранных слов (пусть будет "квартира" и "дом")
это у меня вроде как получилось...
НО...
мне нужно, чтобы в выгруженных текстах не было других слов из моего словаря!
т.е. если в тексте встречается "квартира", "стул", "шкаф" - то этот текст не должен выгружаться
т.е. в итоге у меня должен быть набор текстов, где встречается только одно слово из словаря, и других там не должно быть
собственно, сам код:
import csv
from collections import Counter
house_list = set(["квартира", "дом"] )
in_csv = open("C:\\Hun\\texts_for_topicminer\\Vk_csv_full_lem_CORRECTED.csv", "rt", newline="")
out_csv = open("C:\\Hun\\dasha\\house_counter.csv", "wt", newline="")
full_house = open("C:\\Hun\\dasha\\house_list-2.csv", "rt", newline="")
reader = csv.reader(in_csv, delimiter=";")
writer = csv.writer(out_csv)
full_house_reader = csv.reader(full_house, delimiter=";")
full_house_list = set()
for row in full_house_reader:
full_house_list.add(row[0])
print(full_house_list)
for house in house_list:
full_house_list.remove(house)
writer.writerow(["line_number", "auth_id", "date", "text", "city", "region", "text_length", "квартира", "дом"])
for num, row in enumerate(reader):
words_list = row[0].split()
if set(full_house_list).issubset(words_list):
continue
else:
cnt = Counter(words_list)
two_house = False
for house in house_list:
if cnt[house] != 0:
two_house = True
if two_house:
house_counter = {}
for house in house_list:
house_counter[houses] = cnt[house]
writer.writerow([num + 1, row[1], row[4], row[0], row[7], row[8], len(words_list), house_counter["квартира"], house_counter["дом"]])
как это можно сделать? как это прописать в коде?