классифицировать текст в столбце, используя ключевые слова - PullRequest
0 голосов
/ 17 мая 2018

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

В другом списке у меня есть список категорий с различными ключевыми словами, которые помогаютидентифицируйте его.

Например:


Категория |ключевые слова

AAAA |ключевое слово1

AAAA |Ключевое слово2 и Ключевое слово3

AAAA |ключевое слово3, а не ключевое слово4

BBBB |Ключевое слово4

BBBB |ключевое слово5 и ключевое слово6

BBBB |Ключевое слово7

Как заполнить столбец категории в моей предыдущей таблице (содержащей описание), используя ключевые слова в ней.

Например:


     Description                  |  category

это свободный текст ключевое слово1 сделано |AAAA


бесплатный пример2 ключевое слово4 ключевое слово3 |BBBB


я использую язык Python,

Я обнаружил похожий случай, но с помощью Excel: https://exceljet.net/formula/categorize-text-with-keywords

KIND REGARDS

1 Ответ

0 голосов
/ 17 мая 2018

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

keyword_tuple = [('AAAA', {'in': ['kwrd1'], 'out':[]}), 
                 ('AAAA', {'in': ['kwrd2', 'kwrd3'], 'out': []),
                 ('AAAA', {'in': ['kwrd3'], 'out': ['kwrd4']}), 
                 ('BBBB', {'in': ['kwrd4'], 'out': [])]

После правильной инициализации keyword_tuple вы можете просмотреть список описаний, чтобы определить, к какой категории они относятся.Давайте сохраним результаты в списке кортежей с именем result_tuple, где первый элемент - это описание, а второй - соответствующая категория.

result_tuple = []

for description in description_list:
    # Find categories that satisfy the include condition
    categories_in = [cat[0] for cat in keyword_tuple if all([kw in description for kw in cat[1]['in']])]
    # Find categories that satisfy the exclude condition
    categories_out = [cat[0] for cat in keyword_tuple if all([kw not in description for kw in cat[1]['out']])]

    # Find the categories that satisfy both 
    # If there are multiple categories satisfying the condition, you need to come with a decision rule
    categories = list(set(categories_in).intersection(categories_out))

    # Append to the result list (Takes the first that is satisfied)
    if len(categories) > 0:
        category = categories[0]
    else:
        category = 'NO CATEGORY'

    result_tuple.append(description, category)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...