在Python中提取关键字并分配给类别

在Python中提取关键字并分配给类别,python,pandas,string,nlp,nltk,Python,Pandas,String,Nlp,Nltk,我有一个数据集,我的销售人员在其中记录潜在客户以及这些潜在客户是否转化为客户。这些注释通常(但不总是)包括显示领导资历级别的关键字(即所有者、董事/总经理、C级),但以多种方式书写(即董事、董事、DM、CEO、C.e.O等) 我试图写一个模糊逻辑,它可以帮助我将这些笔记分为4类: categories = ['C-level', 'Director+','Manager','Else'] 我尝试使用FuzzyWzzy的token\u set\u ratio,同时使用wordnet.synset

我有一个数据集,我的销售人员在其中记录潜在客户以及这些潜在客户是否转化为客户。这些注释通常(但不总是)包括显示领导资历级别的关键字(即所有者、董事/总经理、C级),但以多种方式书写(即董事、董事、DM、CEO、C.e.O等)

我试图写一个模糊逻辑,它可以帮助我将这些笔记分为4类:

categories = ['C-level', 'Director+','Manager','Else']
我尝试使用FuzzyWzzy的
token\u set\u ratio
,同时使用
wordnet.synsets(string)
PyDictionary.synonym(string)
提取潜在的同义词,这在很大程度上是可行的,但并不理想

我遇到的更大问题是一些字符串包含层次结构,例如:

'She's a manager that needs approval from the CEO'
这属于经理和C级,但正确的选择是经理

下面是一个数据帧示例:

请注意,下面显示的变体仅用于数据帧构建,而不是真实的

import random
import string

categories = ['C-level', 'Director+','Manager','Else']

variations = ['decision maker','director','manageress','managing director','managing_director',
              'district manager','manager','administrator','business executive','CEO',
              'corporate executive','chief_operating_officer','chief executive officer',
              'chief operating officer','chief_executive_officer','copywriter','staff member',
              'workingman','working person','employee','workman','worker','public servant',
              'crewman','staffer','dispatcher','sales representative','line worker','salesperson', 'decider']



df = pd.DataFrame({'id' : [''.join(random.choices(string.ascii_uppercase + string.digits, k=7)) for i in range(10000)],
               'Department' : [random.choice(['Operations', 'Sales', 'Marketing', 'Partnertship']) for i in range(10000)],
               'notes/authority' : [2*(''.join(random.choices(string.ascii_lowercase, k=7)) + ' ' +''.join(random.choices(string.ascii_lowercase, k=7)))+' '+random.choice(variations) for i in range(10000)],
               'stage' : [random.choice(['won', 'lost']) for i in range(10000)]})