сравнение списков маркированных слов с набором слов

#python #nlp

#python #nlp

Вопрос:

Я хочу знать, связаны ли обзоры с темой или нет, поэтому я создал набор слов, которые имеют отношение к теме.

 effi_set = {"reminders","medication", "Alarm"
"diet", "carbohydrate","nutrition","weight","IBM", "sport", "activity", "fitbit","blood","insulin",
"Hb1ac" , "data exportation","feedback", "monitoring","recording ","monitor", "record",
"passwords","security","backup","protection",
"information","education","complication","risk","prevent","contact","consultation",
"facebook","twitter","social media","mail","FAQ","doctor",
"data","offline","language","location","region","country",
"devise","glucometer","bluetooth","automation","carb","barcode","food","syncronize","PHR","import"}
  

Я маркирую каждый обзор, чтобы сравнить маркированные слова с subj_set

 for line in df["content"]:
    tokenized_words =word_tokenize(line)
    for item in tokenized_words:
        if item not in effi_set:
            df["efficient"] = False
        else:
            df["efficient"] = True
  

результатом было то, что все обзоры были ложными, что не так.

Комментарии:

1. Как бы вы узнали об этом, that all reviews all false если вы просто обновляете логический индикатор с помощью df["efficient"] = False ?

2. df.head() df.to_csv(«Final_comments.csv», индекс=False)

Ответ №1:

df["efficient"] = False модифицирует ли весь столбец

Вы должны изменять строку за раз

 df["efficient"] = False
for index, line in df["content"].iteritems():
    tokenized_words =word_tokenize(line)
    for item in tokenized_words:
        if item in effi_set:
            df.at[index, "efficient"] = True
            continue
  

Комментарии:

1. не сработала ошибка типа: ожидаемый объект, подобный строке или байтам

2. Отредактировано ! забыл index в цикле

3. это работает, но результат тот же, что и в эффективном столбце, все равно False

4. ОК. Что должен делать ваш код? должно ли быть эффективным, True если в effi_set найден только один tokenized_words? Потому что здесь он продолжает цикл, поэтому, если последний элемент tokenized_words не найден, он будет установлен efficient в false

5. да, эффективное значение True, когда в effi_set найдено хотя бы одно слово из tokenized_words, поэтому, как только он нашел слово, установите значение efficient в True и выполните следующий список tokenized_words